您好我想在magento的编辑客户表单中添加一个字段。功能方面的这个字段只是在我的扩展上做几件事的触发器。我试图通过重写类将一个字段集添加到一个新的表单对象,然后调用父init表单来实现。这不起作用。我想知道如何修改父类的对象。到目前为止我有:
<adminhtml>
<rewrite>
<customer_edit_tab_account>Yougento_S2b_Block_Rewrite_Editcustomer</customer_edit_tab_account>
</rewrite>
</adminhtml>
这是设置重写,然后我的类(block / rewrite / editcustomer.php)是
class Namespace_Module_Block_Rewrite_Editcustomer extends Mage_Adminhtml_Block_Customer_Edit_Tab_Account
{
public function initForm()
{
$form = new Varien_Data_Form();
$fieldset = $form->addFieldset('new_fieldset',
array('legend'=>Mage::helper('customer')->__('Extra options'))
);
$fieldset->addField('newattr', 'text',
array(
'label' => Mage::helper('customer')->__('Select type'),
'class' => 'input-text',
'name' => 'newattr',
'required' => false
)
);
$this->setForm($form);
return parent::initForm();
}
}
我的代码已执行,但我想当我调用父代表时,新表单对象将替换新代码而不是扩展它。这可能更像是一个php问题,但我想我会指定它为magento
答案 0 :(得分:4)
您遇到的问题是因为您在设置表单后调用了parent :: initForm()。这将创建一个新表单并覆盖您传递给的表单 - &gt; setForm()。
考虑这样写:
public function initForm()
{
parent::initForm();
$form = $this->getForm();
$fieldset = $form->addFieldset('new_fieldset',
array('legend'=>Mage::helper('customer')->__('Extra options'))
);
$fieldset->addField('newattr', 'text',
array(
'label' => Mage::helper('customer')->__('Select type'),
'class' => 'input-text',
'name' => 'newattr',
'required' => false
)
);
$this->setForm($form);
return $this;
}