2012-10-16 172 views
1

構建自定義adminhtml模塊。我使用一個簡單的表單。它看起來像這樣:Magento:將自定義按鈕添加到管理員表單

<?php 

class Namespace_Modulename_Block_Adminhtml_Modulename_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form 
{ 
    protected function _prepareForm() 
    { 
     $form = new Varien_Data_Form(); 
     $this->setForm($form); 
     $fieldset = $form->addFieldset('modulename_form',array('legend'=>Mage::helper('modulename')->__('Module Data'))); 


    $fieldset->addField('test', 'text', array(
      'label'  => Mage::helper('modulename')->__('Test'), 
      'name'  => 'test', 
    )); 

    // I want to add a custom button here. Say an action called "Add Option". 
    //Clicking this action adds input boxes or dropdowns to the form that are to 
    //to be included in the post when submitting the form (obviously). 

我一直在尋找一個堆棧溢出的解決方案,一直沒能找到可以幫助的東西。然後,我嘗試搜尋法師核心中類似的東西。

在管理面板中,如果我轉到[目錄 - >屬性 - >管理屬性],然後單擊標準屬性(如「製造商」),例如,在第二個選項卡上,名爲「管理標籤/選項」以下畫面:

add options

有一個按鈕和動作,讓我添加選項(在文本框的形式)的形式。把它看作是我試圖複製的東西,我進入了核心,試圖弄清楚該怎麼做。如果我打開以下文件(Magento的進取精神12.0.2):

Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options

我看到它是空的,而是延伸Mage_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract

,我曾經使用過此文件了,但很少是有道理的對我來說。我會走錯路嗎?我怎樣才能達到類似的效果,一個按鈕和動作,添加字段到管理員表單?

感謝

回答

7
  1. 您可以設置自定義模板,表單,並通過HTML加上沒有任何標記(如按鈕)。
  2. 爲您現場
$customField = $fieldset->addField('test', 'text', array(
      'label'  => Mage::helper('modulename')->__('Test'), 
      'name'  => 'test', 
    )); 

$customField->setRenderer($this->getLayout()->createBlock('yuormodule/adminhtml_yourform_edit_renderer_button')); 

在塊級

class Yournamespace_Yourmodule_Block_Adminhtml_Yourform_Edit_Renderer_Button extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface { 
    public function render(Varien_Data_Form_Element_Abstract $element) { 
    //You can write html for your button here 
    $html = '<button></button>'; 
    return $html; 
    } 
} 
2

1 - 首先,你必須爲你的網這樣

創建一個容器,您可以添加渲染器
public function __construct() {   
    parent::__construct(); 
    $this->setTemplate('markavip/dataflow/edit/form/mapping.phtml'); 
} 

在同一容器中的2-您可以添加按鈕像

public function _prepareLayout() { 
    $this->setChild('add_button', $this->getLayout()->createBlock('adminhtml/widget_button') 
        ->setData(array(
         'label' => Mage::helper('markavip_dataflow')->__('Add Option'), 
         'class' => 'add', 
         'id' => 'add_new_option_button' 
    ))); 
    $this->setChild('delete_button', $this->getLayout()->createBlock('adminhtml/widget_button') 
        ->setData(array(
         'label' => Mage::helper('markavip_dataflow')->__('Delete'), 
         'class' => 'delete delete-option' 
    ))); 
    return parent::_prepareLayout(); 
} 

public function getAddNewButtonHtml() { 
    return $this->getChildHtml('add_button'); 
} 

public function getDeleteButtonHtml() { 
    return $this->getChildHtml('delete_button'); 
} 

3-並在PHTML您將添加THES按鈕這樣的:

<?php echo $this->getAddNewButtonHtml() ?> 

之後你會玩JS功能添加和隱藏

相關問題