在主要块phtml中调用子块方法

时间:2014-07-28 10:22:50

标签: magento

基本上我想要的是在我的主块中包含子块,并使用它们的方法 没有让他们输入任何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

2 个答案:

答案 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块的自定义块呢?