如何将对象分配给smarty模板?

时间:2010-03-10 04:45:06

标签: php smarty viewmodel variable-assignment

我在PHP中创建了一个模型对象

class User {
  public $title;

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

如何通过分配对象来公开Smarty中User对象的属性?

我知道我可以做到这一点

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

但我的对象有20多个属性。

请告知。

编辑1

以下对我不起作用。

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

OR

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

然后我尝试{$user->title}

什么都没出来。

编辑2

我目前只是想在smarty模板中输出对象的公共属性。对不起,如果我把任何一个与功能混淆了。

谢谢。

3 个答案:

答案 0 :(得分: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'

如果您计划在将对象分配给Smarty模板后更新对象,也可以使用assign_by_ref

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'

答案 1 :(得分:2)

$smarty->assign('user', $user);
模板中的

{$user->title}

答案 2 :(得分:1)

这个适合我。

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

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

无论我是否有$符号

,这个都不起作用
$smarty->assign('user', $user);

我希望有人可以告诉我原因。