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

你做的一切都是对的,除了一件事:你应该设置块别名 - 块的“as”属性。

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

方法getChildgetChildHtml使用块别名从布局中检索块实例。

于 2012-07-09T21:38:46.753 回答