У меня есть массив объектов stdclass.
Как я могу назначить его на шаблон Smarty?
Я пытался сделать это:
$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
массив.
Мы не знаем, каков твой $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}
Это зависит от вашей умной версии.
Но, глядя на сообщение об ошибке, вам может потребоваться сделать следующее
$smarty->register_object('objects', $x->getAllObjects());
$x->getAllObjects()
вероятно возвращает объект.
Вы можете привести его к строке:
$ string = (string) $x->getAllObjects();