Magento: добавление элемента в форму adminhtml (переопределить объект в базовом классе) - PullRequest
1 голос
/ 28 марта 2012

Здравствуйте. Я хочу добавить одно поле в форму редактирования клиента magento. Это поле с точки зрения функциональности является всего лишь триггером, чтобы сделать несколько вещей в моем расширении. Я пытался сделать это, переопределив класс, добавив набор полей к новому объекту формы, а затем вызвав родительскую форму инициализации. Это не работает. Мне было интересно, как изменить объект в родительском классе. Пока у меня есть:

            <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

1 Ответ

4 голосов
/ 28 марта 2012

Проблема в том, что вы вызываете parent :: initForm () после установки формы. Это создает новую форму и перезаписывает ту, которую вы передали -> 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...