为getChildHtml()创建新块 - Magento

时间:2014-07-01 13:41:17

标签: php xml magento block

我正在尝试将updateinfo块添加到客户页面。

我将此代码放在customer.xml布局

<block type="core/text_list" name="updateinfo" as="updateinfo"/>
<reference name="updateinfo">
<block type="core/template" name="updateinfoBlock" template="customer/update_info.phtml" />
</reference>

并将update_info.phtml添加到客户文件夹中。

还补充说 <?php echo $this->getChildHtml('updateinfo') ?> 到客户页面 但我还没有得到任何东西。卡住。

3 个答案:

答案 0 :(得分:1)

尝试以下代码

<block type="core/text_list" name="updateinfo" as="updateinfo">  
   <block type="core/template" name="updateinfoBlock" template="customer/update_info.phtml" /> 
</block>

到达这个区块你可以得到这样的

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

答案 1 :(得分:0)

尝试:

getChildHtml('updateinfoBlock') ?> 

而不是:

getChildHtml('updateinfo') ?>

答案 2 :(得分:0)

如果您想使用getChildHtml(),则需要设置块的as属性以及name属性。 Name属性通常用于在布局文件本身中引用。如果需要通过模板文件调用块,则使用as属性中指定的值。所以你需要像这样的块定义

<block type="core/template" name="updateinfoBlock" as="update.info.block" template="customer/update_info.phtml" />

您需要将此块称为

 <?php $this->getChildHtml('update.info.block'); ?> 

但是,core/template块的父块的类型为core/text_list。该类型块内的子项将自动呈现。意味着您不需要通过getChildHtml()方法呼叫这些孩子。一些示例包括leftrightcontent块。其中的块将自动呈现。

因此,请将您的core/template块直接放在布局中的任意位置,然后按照上面的说明调用它。除非必要,否则你不需要像往常一样把它放在另一个区块中。