2013-02-21 49 views
0

我對Smarty比較陌生,似乎無法弄清楚這一點。PHP在SmartyBC中的Foreach。 Smarty模板

在我的php控制器中,我創建了一個類「產品」,我需要多次展示它。例如,如果我的頁面上有5個不同的項目,我會將「產品」實例化5次。然後我創建一個包含這些的數組。它是這樣的: (我的對象充滿了產品的信息)。

代碼:

$product_array = array ( 0 => Object1, 1 => Object2); etc.

我然後分配該數組到smarty的變量{$ product_array}。 一旦進入我的.tpl,我會經歷一個顯示產品的循環。那時我需要將$ products_array [0]或{$ products_array.0}賦值給另一個變量$ products,以顯示我需要的所有產品信息。然後它會再次通過循環並顯示給我{$ products_array.1}等等。

但是,這似乎是不可能的,看到任何方式,我嘗試和實現這一點(我甚至嘗試使用{php}恥辱我)我似乎無法弄清楚。 我收到此錯誤:類Product的對象無法轉換爲字符串。

+1

你不能這樣做,它不會工作。你需要改變邏輯。要麼使用純PHP或純Smarty。不要把兩者結合起來。 – 2013-02-21 15:44:55

+1

在控制器中執行業務邏輯,並且不要在視圖中實例化模型。 – 2013-02-21 15:46:56

回答

1

我很確定你不能混合在一個{php}標籤smarty的東西。但問題是爲什麼要這樣做?爲什麼不創建所有產品並將它們放入數組中,然後將它們分配給smarty並以smarty語法循環使用它?

{php} 
    $accesories = $GLOBALS['accessories']; 
    $products = array(); 
    foreach($accesories as $k => $v) 
    { 
     var_dump($instantProduct = new Product($accesories[$k], TRUE)); 
     $products[$k] = new Product($accesories[$k], TRUE); 
    } 

    $smarty->assign('products', $products); 
{/php} 

// now loop and conditions in smarty 

這就是說,你真的應該只是解決這個問題,現在使用的「控制器」移動這個邏輯到任何您選擇。它可能會揭示更廣泛的設計問題,您將不得不以這種或那種方式解決問題。