我有一个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阵列的元素。
我们不知道您的$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());
智能文件:
{foreach from=$objects item=o}
{$o->name}
{/foreach}
这取决于您的智能版本。
但是查看错误消息,您可能需要执行以下
$smarty->register_object('objects', $x->getAllObjects());
$x->getAllObjects()
可能正在返回一个对象。
您可以将其转换为字符串:
$string=(string) $x->getAllObjects();