1

次のようにテンプレートからブロックを呼び出しています。推奨される方法ではないことは承知していますが、layout.xml アプローチが問題を引き起こしています

echo $this->getLayout()->createBlock('shoppingbasket/options')
                    ->setTemplate('shoppingbasket/cart/item/default/options.phtml')
                    ->setBlockId('options')
                    ->setProduct($_item->getProduct())
                    ->setSelectedOptions($this->getOptionList())
                    ->toHtml() ?>

ブロックがレンダリングされます。今、layout.xmlアプローチで追加しようとしています

次のようにブロックを layout.xml に追加しました。

<layout>    
    <checkout_cart_index>    
        <reference name="checkout.cart">
            <block type="shoppingbasket/options" template="shoppingbasket/cart/item/default/options.phtml" name="options"></block>
            <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>shoppingbasket/cart/item/default.phtml</template></action>
        </reference>
    </checkout_cart_index>
</layout>

そして、次のようにテンプレートからブロックを呼び出しています。

 <?php echo $this->getChildHtml('options') ?> 

ブロックが表示されず、layout.xml のどこにでもブロックを移動しようとしました。私は何を間違っていますか?また、私が行ったように、layout.xml アプローチを使用してパラメーターをブロックに渡す方法はありますか

->setProduct($_item->getProduct())
                    ->setSelectedOptions($this->getOptionList())

ありがとう!

4

1 に答える 1

0

1つを除いて、すべて正しく実行しました。ブロックエイリアス(ブロックの「as」属性)を設定する必要があります。

<block type="shoppingbasket/options" template="shoppingbasket/cart/item/default/options.phtml" name="options" as="options"></block>

メソッドgetChildまたはgetChildHtmlブロックエイリアスを使用して、レイアウトからブロックインスタンスを取得します。

于 2012-07-09T21:38:46.753 に答える