Bonjour,
Je développe un site web sous le framework CodeIgniter. Je suis actuellement bloqué avec un problème lors de l'enregistrement des mes obejts contenus dans mon panier.
L'erreur survient lorsque j'ajoute un objet à l'aide d'une requête http en asyncrhone (ajax), la méthode en question est la suivante :
Code :
- <?php
- function addNdd(){
-
- $ndd = $this->input->post('ndd');
- $extension = $this->input->post('extension');
- $etat = $this->input->post('etat');
-
-
- $this->load->library('cart');
- $cart =& Cart::getInstance();
-
- $type = ($etat==1) ? "commande":"transfert";
-
-
- $o = FabriqueItem::create('ndd',array('ndd'=>$ndd.'.'.$extension,'tps'=>12,'type'=>$type));
- $prix = $this->devise->getAmount($this->mdl_domaine->getPrix($extension));
-
-
- $result = ($cart->addArticle($o));
- if($result){
- $xml = '<racine><resultat reponse="addNdd" ndd="'.$ndd.'.'.$extension.'" prix="'.$prix.'">true</resultat><description>'.$o->getNdd()." ".$o->getType()." - ".$this->devise->getPrice($o->getPrix()).' - '.$o->getTps().' mois</description></racine>';
-
- } else
- $xml = '<resultat reponse="addNdd">false</resultat>';
-
-
- $data['xml'] = utf8_encode($xml);
-
- log_message('debug', $xml);
-
-
- $this->load->view('ajax/display',$data);
-
- }?>
|
Il s'avère que lorsque je n'utilise pas l'ajout via cette page, l'insertion en base de données se fait correctement. C'est comme si la création de l'objet n'était aps fait correctement puisque j'ai une erreur du type :
Citation :
A PHP Error was encountered
Severity: Notice
Message: ItemNdd::save() [function.ItemNdd-save]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition “Ajax” of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition
Filename: libraries/Cart.php
Line Number: 331
|
La méthode save est la suivante :
Code :
- <?php
- class ItemNdd extends Item {
-
- var $ndd='';
- var $type='';
-
- function ItemNdd($ndd,$tps,$type){
- parent::Item($tps);
- $this->ndd = $ndd;
- $this->type = $type; // achat ou transfert
- $this->prix = $this->CI->mdl_domaine->getPrix($this->CI->mdl_domaine->getExtension($this->ndd));
- }
-
- function getNdd(){
- return $this->ndd;
- }
-
- function equals($object){
- if(!($object instanceof ItemNdd)) return false;
- if($this->ndd==$object->ndd) return true;
-
- return false;
- }
-
- function toString(){
-
- return "<br>Nom de domaine : ".$this->ndd.
- "<br> Durée : ".$this->getTps()." mois <br>Prix :".$this->prix;
-
- }
-
- function save($id_commande){
-
- $data = array(
- 'id_item'=>'',
- 'id_commande'=>$id_commande,
- 'type'=>'ndd',
- 'titre'=>$this->type.' nom de domaine : '.$this->ndd,
- 'nbre_mois'=>parent::getTps(),
- 'prix'=>$this->CI->devise->getAmount($this->prix),
- 'date'=>date('Y-m-d H:i:s'));
-
-
- $this->CI->db->insert('items',$data);
- }
- }?>
|
Si quelqu'un aurait une piste à suivre.
Merci d'avance
Louis