2010-03-10 3 views
1

я создал объект модели в PHPКак назначить объект шаблонам smarty?

class User { 
    public $title; 

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

Как я выставить свойство объекта пользователя в Smarty просто путем присвоения объекта?

Я знаю, что я могу сделать это

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

но мой объект имеет нечто вроде более чем 20 плюс свойства.

Просьба сообщить.

EDIT 1

следующее не работает для меня.

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

ИЛИ

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

тогда я пытаюсь {$user->title}

ничего не вышло.

EDIT 2

Я только сейчас пытается вывести общественное свойство объекта в Smarty шаблон. Извините, если я смутил кого-нибудь с функцией.

спасибо.

ответ

1

Это работает для меня.

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

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

Это один не работает независимо, есть ли я знак $

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

Я надеюсь, что кто-то может сказать мне, почему.

9

Вы должны иметь доступ к любым общедоступным свойствам объекта из шаблона Smarty. Например:

$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' 

Вы также можете использовать assign_by_ref, если вы планируете обновление объекта после назначения его шаблона 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'); 

И в файле шаблона

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

жаль, что это не сработало для меня. Я не знаю, почему. См. Мой EDIT 1. –

+0

Вы вызываете '$ user-> changeTitle()' до или после назначения объекта Smarty? – leepowers

+0

мои извинения. В настоящее время я пытаюсь вывести свойство объекта. позвольте мне добавить другое сообщение EDIT –

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

в шаблоне

{$user->title} 
+0

жаль, что это не сработало для меня. Я не знаю, почему. См. Мой EDIT 1. –

Смежные вопросы