0

私は Smarty に比較的慣れていないので、これを理解できないようです。

私のphpコントローラーでは、クラス「製品」を表示する必要がある回数だけインスタンス化します。たとえば、ページに 5 つの異なるアイテムがある場合、"Product" を 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 に答える