Smarty Forum Index Smarty
The discussions here are for Smarty, a template engine for the PHP programming language.
Appeler une méthode d'un objet contenu dans un objet Session

 
Post new topic   Reply to topic    Smarty Forum Index -> Language: French
View previous topic :: View next topic  
Author Message
Centrallatice
Smarty n00b


Joined: 13 Mar 2014
Posts: 1

PostPosted: Thu Mar 13, 2014 9:32 am    Post subject: Appeler une méthode d'un objet contenu dans un objet Session Reply with quote

Bonjour,

Je tente désespéramment de récuperer une valeur d'un Objet lui même Contenu dans un objet parent le tout enregistrée dans la Session et assigner par reference avec Smarty depuis mon Template.

Je m'explique j'ai un Objet A contenant des propriétés privées que j'enregistre en session et que j'arrive à atteindre depuis mon template de cette facon :

Code:
<?php
class A{
   private $_id;
   public function setid($id){ $this->_id=$id;}
   public function getid(){ return $this->_id;}
}


Depuis mon controller je fais :

Code:

$_SESSION[SESSION_NAME]['A']=new A();


sans oublier

Code:

parent::$_objInstanceSmarty->assign_by_ref('monObj',$_SESSION[SESSION_NAME]['A']);


Ce qui me permet depuis mon template de faire :
Code:

{$monObj->getid()}


Ce qui fonctionne très bien, mais ca se corse lorsque dans mon objet A je stocke un Objet B

Code:
<?php
class A{
   private $_id;
   private $_objB;
   public function setid($id){ $this->_id=$id;}
   public function getid(){ return $this->_id;}
   
   public function setobj($o){ $this->_objB=$o;}
   public function getobj(){ return $this->_objB;}
}

class B{
   private $_nom;
   public function setnom($n){ $this->_nom=$n;}
   public function getnom(){ return $this->_nom;}
}

Donc je fais :
Code:

$_SESSION[SESSION_NAME]['A']=new A();
// ET
$_SESSION[SESSION_NAME]['A']->setobj(new B());
//ENFIN :
parent::$_objInstanceSmarty->assign_by_ref('monObj',$_SESSION[SESSION_NAME]['A']);


Et la impossible de faire appel a la mthode getnom de mon objet B depuis mon template :

{$monObj->getobj()->getnom()}

me retourne une erreur dans le template :

Parse error: syntax error, unexpected '>' in templates_c/%%D2^D27^D276B76E%%Etape2.tpl.php on line 54

CE qui est normal car lorsque j'ouvre le fichier du template compiler je vois que smarty interprete {$monObj->getobj()->getnom()} par

$this->_tpl_vars['monObj']->getobj() - > getnom ( ))


Vous remarquez l'espace dans - > que j'ai mis en gras !

Je ne comprend pas pourquoi

Merci pour votre aide[/code]

Précision j'utlise smarty 2.6.28
Back to top
View user's profile Send private message
bluejester
Smarty Regular


Joined: 26 Apr 2012
Posts: 55

PostPosted: Tue Apr 08, 2014 2:32 pm    Post subject: Reply with quote

Hello,

Essaye de vider ton dossier templates_c, Smarty a peut-être galéré à compiler.

Sinon, Smarty 2.6.28 est basée sur Smarty 2.6, qui est sorti en 2003.
Utiliser une version aussi vieille avec PHP5, c'est un peu comme essayer de faire tourner Apache sur Windows 95...

Avec Smarty 3.1+, tu auras beaucoup moins de problèmes Smile

Ben
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Smarty Forum Index -> Language: French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP