2010-03-10 16 views
1

i créé un modèle d'objet en PHPcomment affecter un objet aux modèles smarty?

class User { 
    public $title; 

    public function changeTitle($newTitle){ 
    $this->title = $newTitle; 
    } 
} 

Comment puis-je exposer la propriété d'un objet utilisateur dans Smarty tout en affectant l'objet?

Je sais que je peux le faire

$smarty->assign('title', $user->title); 

mais mon objet a quelque chose comme plus de 20 propriétés et plus.

Veuillez nous aviser.

EDIT 1

ce qui suit ne fonctionne pas pour moi.

$smarty->assign('user', $user); 

OU

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

alors j'essayer de {$user->title}

rien est sorti.

EDIT 2

Je ne tente actuellement de sortir la propriété publique de l'objet dans le template Smarty. Désolé si j'ai confondu quelqu'un avec la fonction.

Merci.

Répondre

1

Celui-ci fonctionne pour moi.

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

// Inside the template. note the lack of a $ sign 
{user->title} 

Celui-ci ne fonctionne indépendamment du fait que je n'ai pas le signe $

$smarty->assign('user', $user); 

J'espère que quelqu'un peut me dire pourquoi.

9

Vous devriez pouvoir accéder aux propriétés publiques d'un objet à partir d'un modèle Smarty. Par exemple:

$o2= new stdclass; 
$o2->myvar= 'abc'; 
$smarty->assign('o2', $o2); 

### later on, in a Smarty template file ### 

{$o2->myvar} ### This will output the string 'abc' 

Vous pouvez également utiliser assign_by_ref si vous envisagez de mettre à jour l'objet après l'avoir assigné au template Smarty:

class User2 { 
    public $title; 
    public function changeTitle($newTitle){ 
    $this->title = $newTitle; 
    } 
} 
$user2= new User2(); 
$smarty->assign_by_ref('user2', $user2); 
$user2->changeTitle('title #2'); 

Et dans le fichier modèle

{$user2->title} ## Outputs the string 'title #2' 
+0

désolé, cela n'a pas fonctionné pour moi. Je ne suis pas sûr pourquoi. S'il vous plaît voir mon EDIT 1. –

+0

Appelez-vous $ user-> changeTitle() 'avant ou après l'attribution de l'objet à Smarty? – leepowers

+0

mes excuses. J'essaie actuellement de sortir la propriété de l'objet. laissez-moi mettre dans un autre message EDIT –

2
$smarty->assign('user', $user); 

dans le gabarit

{$user->title} 
+0

désolé, cela n'a pas fonctionné pour moi. Je ne suis pas sûr pourquoi. S'il vous plaît voir mon EDIT 1. –