0

我对 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 的对象转换为字符串。

4

1 回答 1

1

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

这就是说你现在真的应该解决这个问题并将这个逻辑移动到你用作“控制器”的任何东西中。它可能会揭示您的设计中更普遍的问题,您将不得不以一种或另一种方式解决这些问题。

于 2013-02-21T15:46:53.093 回答