我从模板中调用块,如下所示。我知道它不是推荐的方式,但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())
谢谢!
答案 0 :(得分:0)
你做的一切都是正确的,除了一件事:你应该设置块别名 - 块的“as”属性。
<block type="shoppingbasket/options" template="shoppingbasket/cart/item/default/options.phtml" name="options" as="options"></block>
方法getChild
或getChildHtml
使用块别名从布局中检索块实例。