基本上我想要的是在我的主块中包含子块,并使用它们的方法
没有让他们输入任何HTML
如果我有这种结构:
<block type="core/template" template"/custom.phtml">
<block type="catalog/product_view_options" />
</block>
在custom.phtml中,我希望能够从选项块调用方法。
$this->some_method_from_options_block();
这样我每次需要访问某些方法时都不需要在custom.phtml中使用createBlock
答案 0 :(得分:1)
当您在xml中写道时:
<block type="core/template" template="custom.phtml">
你的块的类是Mage_Core_Block_Template,你可以访问该类中的任何方法及其扩展的类。 所以你可以在这里有2个选项,你的父类扩展你的子类(我相信这是你想要的,但是有点不对劲)。 在Magento里面,你会看到你有这样的东西:
<block type="core/template" template="custom.phtml">
<block type="catalog/product_view_options" template="custom_child.phtml" />
</block>
在custom_child.phtml中,您将拥有$this->some_method_from_options_block();
此外,您可以使用帮助程序将所有方法放在一个类中。
当你在xml中使用子块时,你在父类phtml模板中所做的就是echo $this->getChildHtml('child_name');
(你不需要createBlock
)ofc - 父类必须定义方法或者扩展Mage_Core_Block_Abstract(Mage_Core_Block_Template)。您应该查看Mage / Core / Block文件夹,了解有关某些核心类的方法的更多信息。
答案 1 :(得分:0)
为什么不会创建扩展catalog / product_view_options块的自定义块呢?