2010-01-29 8 views
2

J'ai un problème avec la transmission d'un objet à smarty tag. J'ai le code suivant:Transférer l'objet php à smarty

$contact = new Contacts; 
$smarty = new Smarty; 
$smarty->assign('contact',$contact); 

En test.htpl:

<html> 
<head> 
    <title>{$title}</title> 
</head> 
<body> 
    id: {$contact->id} <br/> 
    name: {$contact->name} <br/> 
    email: {$contact->email} <br/> 
    phone: {$contact->phone} <br/> 
</body> 
</html> 

ce qui conduit à un avertissement de caractère non valide '>'. Comment puis-je resoudre ceci?

J'ai utilisé cette classe pour les tests:

class Contacts 
{ 
public $id = 1; 
public $name = 'Mada'; 
public $email = '[email protected]'; 
public $phone = 123456; 
} 
+0

pouvez-vous nous montrer ce que nous dans la classe Contacts? – RJD22

+0

Googling "smarty modèle objet" conduire à http://www.smarty.net/manual/fr/advanced.features.php comme le premier résultat. – zneak

Répondre

0

En faisant ce qui suit devrait travailler

$smarty->register_object('contact',$contact); 

Appeler cette façon devrait alors travailler

<html> 
<head> 
    <title>{$title}</title> 
</head> 
<body> 
    id: {$contact->id} <br/> 
    name: {$contact->name} <br/> 
    email: {$contact->email} <br/> 
    phone: {$contact->phone} <br/> 
</body> 
</html> 

Aussi vous n » t besoin d'appeler cette méthode

$smarty->assign('contact',$contact); 
1

Utilisez

$smarty->assign_by_ref('contact',$contact); 

Cela vous permettra d'accéder à la façon dont vous attendez. L'utilisation de register_object() est également une option, et vous permet de restreindre ce qui peut être utilisé à partir du modèle, mais cela signifie un format de modèle différent (pas $ initial).