2014-09-26 70 views
0

我有一個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數組中的元素。

+0

請檢查此網址:HTTP:// WWW .smarty.net/docs/en/advanced.features.objects.tpl – 2014-09-26 14:18:30

+0

@hardiksolanki我已經檢查過這個鏈接,但我仍然無法找到一種方法來分配對象數組並從te中訪問它的元素mplate文件。 – Frank 2014-09-26 14:27:45

回答

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} 
0

這取決於你的smarty版本。

但看你可能需要做的錯誤信使以下

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

謝謝,但沒有運氣,請參閱我的編輯 – Frank 2014-09-26 14:26:27

0

$x->getAllObjects()可能是返回一個對象。

,你可以將它轉換爲字符串:

$字符串= (string) $x->getAllObjects();

+0

我試過這個解決方案,但是當我在模板文件中輸入'{$ objects}'時,它打印出'Array' – Frank 2014-09-26 14:29:30

+0

您的預期輸出是什麼? – deadman 2014-09-26 14:33:15

+0

不,因爲我確定該數組包含許多對象,並且我想訪問它們的屬性。 – Frank 2014-09-26 14:36:59