PHP Foreach在SmartyBC。 Smarty模板

时间:2013-02-21 15:39:44

标签: php foreach smarty

我对Smarty来说相对较新,似乎无法解决这个问题。

在我的php控制器中,我会多次设置“Product”类,因为我需要显示它。例如,如果我的页面上有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 个答案:

答案 0 :(得分:1)

我很确定你不能在{php}标签内混合使用聪明的东西。但问题是为什么这样做?为什么不创建所有产品并将它们放在一个数组中,然后将其分配给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

那说你现在真的应该解决这个问题,把这个逻辑转移到你用作“控制器”的任何东西。它可能会揭示您的设计中更广泛的问题,您将不得不以这种或那种方式解决。

相关问题