如何在智能模板文件中分配对象数组

时间:2014-09-26 14:13:03

标签: php smarty

我有一个stdclass对象数组。 如何将其分配给智能模板?

我试着这样做:

$smarty->assign( 'objects', $x->getAllObjects() ); 

但结果是错误:

Catchable fatal error: Object of class Object could not be converted to string

由于

修改:我也试过了:

$smarty->registerObject( 'objects', $x->getAllObjects() );

在模板文件中我做了:

{foreach from=$objects item=o}
  {$o}
{/foreach} 

但是我收到了通知:

Notice: Undefined index: objects

我无法访问objects数组的元素。

3 个答案:

答案 0 :(得分:1)

我们不知道您的$xgetAllObjects()方法是什么。

但是,下面为Smarty分配对象的代码没有问题

PHP文件:

class X
{

    private $_objects;

    public function __construct()
    {
        $a = new StdClass();
        $a->name = 'John';

        $b = new stdClass();
        $b->name = 'Tom';

        $this->_objects[] = $a;
        $this->_objects[] = $b;
    }

    public function getAllObjects()
    {
        return $this->_objects;
    }


}

$x = new X();

$smarty->assign('objects', $x->getAllObjects());

Smarty档案:

{foreach from=$objects item=o}
    {$o->name}
{/foreach}

答案 1 :(得分:0)

这取决于你的智能版本。

但是查看错误消息,您可能需要执行以下操作

$smarty->register_object('objects', $x->getAllObjects());

答案 2 :(得分:0)

$x->getAllObjects()可能正在返回一个对象。

你可以把它投射到一个字符串:

$ string = (string) $x->getAllObjects();