尝试将子块添加到adminhtml表单

时间:2014-01-02 15:43:06

标签: php forms magento parent-child

我遇到了以下问题: 我使用来自Magento和标准模板的纯PHP在adminhtml区域创建了一个Fom。 这一切都按预期工作,但我无法动态添加和删除字段,我需要Javascript和我自己的phtml文件。

我的想法现在只是包含一个在表单末尾使用自定义模板的子块。

到目前为止,我添加了

$cblock =$this->getLayout()
->createBlock('netcon_konmod/adminhtml_caps_edit_mat')
->setTemplate('netcon_konmod_mat.phtml');

$this->_addContent($this->getLayout()
->createBlock('netcon_konmod/adminhtml_caps_edit')->setChild($cblock));

到我的控制器,创建了一个空的Netcon_Konmod_Block_Adminhtml_Caps_Edit_Mat类,扩展了Mage_Adminhtml_Block_Widget

并在... / template / netcon / konmod /

中创建模板文件mat.phtml

我也有我的konmod.xml更新我的布局,其中包括

<adminhtml_caps_edit>
    <reference name="content">
        <block type="netcon_konmod/adminhtml_caps_edit" name="netcon_konmod_caps_edit">
            <block type="netcon_konmod/adminhtml_caps_edit_mat" name="netcon_konmod_caps_mat" template="netcon_konmod_mat.phtml" />
        </block>
    </reference>
</adminhtml_caps_edit>

我对Magento很新,直到现在我才发现通过从父块的现有phtml文件调用getChildHtml来包含子块的方法。 但是,由于我使用form和fieldset方法完全创建了我的表单,因此我没有自己的phtml文件可以包含该调用。

我现在设置它的方式,它正常显示表单,但不包括子块。

如果能够做到这一点,我们将不胜感激任何帮助,我希望避免将整个表格重新编码为模板。

1 个答案:

答案 0 :(得分:1)

尝试

$childBlock = $this->getLayout()
            ->createBlock('konmod/adminhtml_caps_edit_mat')
            ->setTemplate('netcon_konmod_mat.phtml');

$this->_addContent($this->getLayout()
            ->createBlock('konmod/adminhtml_caps_edit')
          //->setTemplate('netcon_konmod_mat.phtml')
          ->append($childBlock));