Bonjour,
J'utilise Smarty et je souhaite accéder aux propriétés d'un objet dans un objet ?
J'ai essayé ça mais ça ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <td>{$enfant->recupererPere()->getNom()}</td>
Bonjour,
J'utilise Smarty et je souhaite accéder aux propriétés d'un objet dans un objet ?
J'ai essayé ça mais ça ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <td>{$enfant->recupererPere()->getNom()}</td>
Normalement ça fonctionne.
Es tu sûr que recupererPere() te retourne bien l'objet voulu ?
Il faut impérativement passer par un assign pour ce type d'instruction
D'après leur Faq :
J'ai testé la chose de mon côté en simulant ton cas de figure :Q: How can I access methods of a class that was returned by an assigned object? For example: {$obj->getMemberObj()->foo()} . I tried to {assign} $obj->getMemberObj() first but that didn't work either. A: You can't, at least not in PHP4. This is a limitation of the language. In PHP5 this has been solved. Instead, assign the variable first, and then call the function.
{assign var='object' value=$obj->getMemberObj()}
Foo is now: {$object->foo()}
Cette syntaxe ne marche pas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 //code pour smarty... $oPere = new Pere('Papa'); $enfant = new Enfant('Enfant', $oPere); $oSmarty->assign('enfant', $enfant); $oSmarty->display('index.tpl'); class Pere { protected $nom = null; public function __construct($nom) { $this->nom = $nom; } public function getNom() { return $this->nom; } } class Enfant extends Pere{ protected $pere = null; public function __construct($nom, Pere $pere) { parent::__construct($nom); $this->pere = $pere; } public function getPere() { return $this->pere; } }
Comme c'est dit dans la Faq on s'en sort avec un assign dans le template :
Code : Sélectionner tout - Visualiser dans une fenêtre à part {$enfant->getPere()->getNom()}
Voilà donc dans ton cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {assign var='oPere' value=$enfant->getPere()} {$oPere->getNom()}
Devrait marcher ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {assign var='pere' value=$enfant->recupererPere()} {$pere->getNom()}
++
Merci, en effet, c'est ce que j'ai vu et ça fonctionne très bien avec assign.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager