2013-01-03 41 views
1

我想用自定義實體編寫模塊。在後端它應該看起來像產品的後端(左邊的標籤,右邊的表格)。magento選項卡式後端像目錄/自定義實體的產品

我嘗試過很多變種,並從核心檢查/複製了很多東西來理解它......好吧,我沒有。

瞭解任何人的教程或必要的關鍵點來實現這一點?

非常感謝

編輯:嗯,這是不是建立自己的實體問題,這是衆所周知的。 我需要幫助創建後端,這樣的結果看起來像標籤形式編輯工作的產品

+1

也許這? http://stackoverflow.com/questions/9184101/magento-adding-a-custom-entity – pzirkind

回答

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

} 
+0

非常好...我目前正在關注你的第一個鏈接 – bukart

+0

這是行不通的,我想在任何地方都必須定義調用標籤...在哪裏?目前我只是在完成你所寫的修改之後纔得到一個空的白頁。 – bukart

+0

Super_Awesome_Block_Adminhtml_Example_Edit_Tabs類用於創建選項卡,並使用類Super_Awesome_Block_Adminhtml_Example_Edit_Tabs_SecondTab獲取內容 – MagentoDiary

相關問題