代码之家  ›  专栏  ›  技术社区  ›  Kim Stacks

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

  •  1
  • Kim Stacks  · 技术社区  · 14 年前
    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();
    

    在my.tpl中,我想显示$A->objb->标题

    我该怎么做?我试过

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

    我不能聪明地这么做

    {$a->objB->title}
    

    我也尝试过

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

    我不能聪明地这么做

    {a->objB->title}
    

    $A->objb->标题
    

    请告知。

    1 回复  |  直到 14 年前
        1
  •  1
  •   ahmetunal    14 年前

    我认为Smarty不支持这个操作,我也有同样的问题,并且像这样解决了

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

    有点长,有点乱,但还是个解决办法。

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

    或者你可以定义一个聪明的函数,在你需要的时候为你做它,