1

カスタム エンティティを使用してモジュールを作成したいと考えています。バックエンドでは、製品のバックエンドのようになります (左側にタブ、右側にフォーム)。

私は多くのバリアントを試し、それを理解するためにコアから多くのものを検査/コピーしました...よくわかりません。

これを実現するためのチュートリアルまたは必要なキーポイントを知っている人はいますか?

どうもありがとう

編集:まあ、独自のエンティティを作成することは問題ではありません。これはよく知られています。製品を編集するときに結果がタブ付きフォームのように見えるように、バックエンドを作成するのに助けが必要です

4

1 に答える 1

9

管理画面に複数のタブを追加するには、まず mpaepper が提供するhttp://codemagento.com/2011/02/grids-and-forms-in-the-admin-panel/を参照してください。

その後、以下のクラスを作成します

Super_Awesome_Block_Adminhtml_Example_Edit_Tabs
Super_Awesome_Block_Adminhtml_Example_Edit_Tabs_Form
Super_Awesome_Block_Adminhtml_Example_Edit_Tabs_SecondTab

に変更 Super_Awesome_Block_Adminhtml_Example_Edit_Formします

class Super_Awesome_Block_Adminhtml_Example_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
    protected function _prepareForm()
    {
        $form = new Varien_Data_Form(array(
                'id' => 'edit_form',
                'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
                'method' => 'post',
                'enctype' => 'multipart/form-data',
        ));

        $form->setUseContainer(true);

        $this->setForm($form);

        return parent::_prepareForm();
    }
}

以下のコードを追加

class Super_Awesome_Block_Adminhtml_Example_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs {

    public function __construct() {
        parent::__construct();
        $this->setId('awesome_tabs');
        $this->setDestElementId('edit_form');
        $this->setTitle(Mage::helper('awesome')->__('Your Title Here'));
    }

    protected function _beforeToHtml() {
        $this->addTab('form_section', array(
            'label' => Mage::helper('awesome')->__('Details'),
            'title' => Mage::helper('awesome')->__('Details'),
            'content' => $this->getLayout()->createBlock('awesome/adminhtml_awesome_edit_tab_form')->toHtml(),
        ));


        $this->addTab('secondtab_section', array(
            'label'     => Mage::helper('awesome')->__('SecondTab'),
            'title' => Mage::helper('awesome')->__('SecondTab'),
            'content'   => $this->getLayout()->createBlock('awesome/adminhtml_awesome_edit_tab_secondtab')->toHtml(),
        ));

        return parent::_beforeToHtml();
    }

}

...

class Super_Awesome_Block_Adminhtml_Example_Edit_Tabs_Form extends Mage_Adminhtml_Block_Widget_Form
{
  protected function _prepareForm()
  {
      $form = new Varien_Data_Form();
      $this->setForm($form);
      $fieldset = $form->addFieldset('awesome_form', array('legend'=>Mage::helper('awesome')->__('Header text here')));

      $fieldset = $form->addFieldset('example_form', array(
             'legend' =>Mage::helper('awesome')->__('Example Information')
        ));

        $fieldset->addField('name', 'text', array(
             'label'     => Mage::helper('awesome')->__('Name'),
             'class'     => 'required-entry',
             'required'  => true,
             'name'      => 'name',
             'note'     => Mage::helper('awesome')->__('The name of the example.'),
        ));

        $fieldset->addField('description', 'text', array(
             'label'     => Mage::helper('awesome')->__('Description'),
             'class'     => 'required-entry',
             'required'  => true,
             'name'      => 'description',
        ));

        $fieldset->addField('other', 'text', array(
             'label'     => Mage::helper('awesome')->__('Other'),
             'class'     => 'required-entry',
             'required'  => true,
             'name'      => 'other',
        ));

        if (Mage::getSingleton('adminhtml/session')->getExampleData())
        {
            $data = Mage::getSingleton('adminhtml/session')->getExamplelData();
            Mage::getSingleton('adminhtml/session')->getExampleData(null);
        }
        elseif (Mage::registry('example_data'))
        {
            $data = Mage::registry('example_data')->getData();
        }
        else
        {
            $data = array();
        }

      return parent::_prepareForm();
  }
}

....

class Super_Awesome_Block_Adminhtml_Example_Edit_Tabs_SecondTab extends Mage_Adminhtml_Block_Widget_Grid {

    public function __construct() {
        parent::__construct();
        $this->setId('awesomeGrid');
        $this->setDefaultSort('awesome_secondtab_id');
        $this->setDefaultDir('DESC');
        $this->setSaveParametersInSession(true);
        $this->setFilterVisibility(false);
        $this->setPagerVisibility(false);
    }

    protected function _prepareCollection() {
        $id     = $this->getRequest()->getParam('id');
        $collection = Mage::getModel('awesome/secondtab')->getCollection()->addFilter('awesome_id', $id);
        $this->setCollection($collection);
        return parent::_prepareCollection();
    }

    protected function _prepareColumns() {


        $this->addColumn('created_time', array(
            'header' => Mage::helper('awesome')->__('Date'),
            'index' => 'created_time',
            'type' => 'datetime',
            'align' => 'left',
            'sortable' => false,
        ));

        $this->addColumn('type', array(
            'header' => Mage::helper('awesome')->__('Type'),
            'align' => 'left',
            'index' => 'type',
            'sortable' => false,
        ));

        $this->addColumn('amount', array(
            'header' => Mage::helper('awesome')->__('Amount'),
            'align' => 'left',
            'index' => 'amount',
            'type'  => 'currency',
            'currency' => 'amount',
            'sortable' => false,
        ));

        $this->addColumn('balance', array(
            'header' => Mage::helper('awesome')->__('Balance'),
            'align' => 'left',
            'index' => 'balance',
            'type'  => 'currency',
            'currency' => 'balance',
            'sortable' => false,
        ));

        $this->addColumn('order_number', array(
            'header' => Mage::helper('awesome')->__('Order Number'),
            'align' => 'left',
            'index' => 'order_number',
            'sortable' => false,
        ));

        return parent::_prepareColumns();
    }

}
于 2013-01-04T05:38:13.827 に答える