0

我想向编辑客户页面添加一个新表单,到目前为止一切顺利,使用重写 customer_edit_tabs 我能够将一个选项卡和我的管理表单添加到页面。代码看起来像这样。

protected function _beforeToHtml()
{

        $this->addTab('extraoptions', array(
                'label'     => Mage::helper('customer')->__('Extra options'),
                'class'     => 'ajax',
                'url'       => $this->getUrl('module/adminhtml_tabs/info', array('_current' => true)),
        ));  

这会正确添加我的标签。从那里标签控制器上的链接:

    public function infoAction()
{
    $this->_init();
    $this->getResponse()->setBody(
    $this->getLayout()->createBlock('module/adminhtml_tabs_edit')->toHtml()
    );;
}  

这链接到我在 Block/Adminhtml/Tabs/Edit.php 上的表单容器

class Namespace_Module_Block_Adminhtml_Tabs_Edit extends Mage_Adminhtml_Block_Widget_Form_Container{public function __construct()
{
    parent::__construct();

    $this->_objectId = 'id';
    $this->_mode = 'edit';
    $this->_blockGroup = 'module';
    $this->_controller = 'adminhtml_tabs';
    $this->_updateButton('save', 'label', Mage::helper('module')->__('Save'));

}

public function getHeaderText()
{
    return Mage::helper('module')->__('Extra Options');
}

}

我的块/Adminhtml/Tabs/Edit/Form.php

class Namespace_Module_Block_Adminhtml_Tabs_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
    {
public function __construct()
{
    parent::__construct();
}
protected function _prepareForm()
{
    $form = new Varien_Data_Form(array(
'id' => 'info_form',
                       'action' => $this->getUrl('module/adminhtml_tabs/save', array('id' => $this->getRequest()->getParam('id'))),
                       'method' => 'post',
                       'enctype' => 'multipart/form-data'
                               )
    ); 

    $fieldset = $form->addFieldset('extra_options', array('legend' => Mage::helper('module')->__('Extra Options Fieldset')));

    $fieldset2->addField('extra', 'text', array(
            'name'      => 'zip',
            'title'     => Mage::helper('module')->__('extra'),
            'label'     => Mage::helper('module')->__('extra data'),
            'maxlength' => '250',
            'required'  => false,
));
    $form->setUseContainer(true);

    }
protected function _prepareLayout()
{
    return parent::_prepareLayout();
}  

一切都很好,我在默认的保存客户按钮下方有一个新按钮,但是这个保存按钮不会更新操作,所以如果我点击它,它会转到默认的客户/编辑/保存操作,它不会告诉我不存在它应该存在的方法。我的猜测是容器有问题,但我尝试了三个几乎没有区别的教程,但无济于事,希望有人能提供帮助,甚至可能有人会发现我的代码有帮助。

4

2 回答 2

0

在这行代码中:

'action' => $this->getUrl('module/adminhtml_tabs/save')

您告诉 Magento 在该文件中查找名为 module 的模块、别名为 adminhtml_tabs 的控制器和 saveAction() 方法。

当需要执行保存时,您需要确定要将用户发送到哪里,然后将其放置在那里(例如,到您的控制器的路由-> saveAction() 方法)。

于 2012-04-04T19:13:30.803 回答
0

我决定创建一个新按钮以使用自定义操作进行保存。在容器上:

$this->_addButton('save', array(
        'label'     => Mage::helper('adminhtml')->__('Save Extras'),
        'onclick'   => 'document.myform.submit();',
        'class'     => 'save',
    ),-1,5);  

这成功了。

于 2012-04-06T17:48:39.737 回答