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


How to assign an array of objects within a smarty template file

我有一个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

并且我不能访问CCD_ 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());

智能文件:

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

这取决于您的智能版本。

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

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

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

您可以将其转换为字符串:

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