我有一个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
数组的元素。
答案 0 :(得分:1)
我们不知道您的$x
和getAllObjects()
方法是什么。
但是,下面为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();