如果对象属性是另一个对象,我如何在smarty中访问该对象属性的属性或方法?

时间:2010-03-11 08:45:14

标签: php templates smarty variable-assignment

class A
{
  public $property1;
  public $objB;

  public __construct(){
    $this->property1 = 'test';
    $this->objB = new B();
  }
}

class B
{
  public $title;
  public __construct(){
    $this->title = 'title1';
  }

}

现在我在.php文件中执行此操作

$a = new A();

在我的.tpl中我要显示$ a-> objB-> title

我该怎么做?我试过了

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

我不能在聪明的事情中做到这一点

{$a->objB->title}

我也试过

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

我不能在聪明的事情中做到这一点

{a->objB->title}

OR

{$a->objB->title}

请告知。

1 个答案:

答案 0 :(得分:1)

我不认为smarty支持该操作,我遇到了同样的问题并且像这样解决了

{assign var='myObject' value=$a->objB}
{$myObject->title}

有点长而且凌乱,但仍然是一个解决方案。

另一种解决方案可能是在php端分配标题(但仍然是相同的冗长和混乱的代码)

或许您可以定义一个智能功能,可以随时为您完成,