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();
}  

すべて問題ありません。デフォルトの顧客保存ボタンの下に新しいボタンがありますが、この保存ボタンはアクションを更新しないため、クリックするとデフォルトの顧客/編集/保存アクションに移動しますが、メソッドが存在しません。私の推測では、コンテナーに問題があると思いますが、3 つのチュートリアルを試してみましたが、ほとんど違いがなく、役に立ちませんでした。誰かが助けてくれることを願っています。

4

2 に答える 2

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 に答える
0

このコード行では:

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

module という名前のモジュール、adminhtml_tabs エイリアスのコントローラー、およびそのファイル内の saveAction() メソッドを探すように Magento に指示しています。

保存を実行する必要があるときにユーザーを送信する場所を見つけて、そこに配置する必要があります (たとえば、コントローラーへのルート->saveAction() メソッド)。

于 2012-04-04T19:13:30.803 に答える