2013-01-31 42 views
3

我創建了一個模塊,允許用戶在創建角色權限時選擇網站(系統 - >權限 - >角色 - >添加新角色 - >角色資源)。我使用觀察者來實現這一點,但我無法獲得表單對象。使用事件觀察員在magento添加網站字段管理員角色權限

Observer.php

class Mymodule_Mycompany_Model_Observer 
{ 
    public function appendCustomRow(Varien_Event_Observer $observer) 
    { 
     $block = $observer->getEvent()->getBlock(); 
     if (!isset($block)) { 
      return $this; 
     } 
     if ($block->getType() == 'adminhtml/permissions_editroles') {  
      //get form instance 
      $form = $observer->getEvent()->getForm(); 
      //create new custom fieldset 'website' 
      $fieldset = $form->addFieldset('website', array(
       'legend' => 'Website Extras', 
       'class' => 'fieldset-wide' 
       ) 
      ); 
      //add new field 
      $fieldset->addField('website', 'text', array(
       'name'  => 'website', 
       'label'  => Mage::helper('adminhtml')->__('Website'), 
       'title'  => Mage::helper('adminhtml')->__('Website'), 
       'disabled' => false, 
      )); 
     } 
    } 
} 

Mymodule中/ myCompany中的/ etc/config.xml中

<adminhtml> 
     <events> 
      <core_block_abstract_prepare_layout_before> 
       <observers> 
        <Event_column_append> 
         <type>model</type> 
         <class>Mymodule_Mycompany_Model_Observer</class> 
         <method>appendCustomColumn</method> 
        </Event_column_append> 
       </observers> 
      </core_block_abstract_prepare_layout_before> 
      </events> 
</adminhtml> 

回答

7

我的工作了。這裏是工作

public function appendCustomColumn(Varien_Event_Observer $observer) 
{ 
    $block = $observer->getEvent()->getBlock(); 
    if (!isset($block)) { 
     return $this; 
    } 
    if ($block->getType() == 'adminhtml/permissions_tab_roleinfo') {  
     //get form instance 
     $form = $block->getForm(); 
     //create new custom fieldset 'website' 
     $fieldset = $form->addFieldset(
      'website_field', 
      array(
       'legend' => 'Website Extras', 
       'class' => 'fieldset-wide' 
      ) 
     ); 
     //add new field 
     $fieldset->addField('website', 'text', array(
      'name'  => 'website', 
      'label'  => Mage::helper('adminhtml')->__('Website'), 
      'title'  => Mage::helper('adminhtml')->__('Website'), 
      'disabled' => false, 
     )); 
    } 
} 

XML配置代碼的修改件:

<events> 
    <adminhtml_block_html_before> 
     <observers> 
      <Event_column_append> 
       <type>model</type> 
       <class>Mymodule_Mycompany_Model_Observer</class> 
       <method>appendCustomColumn</method> 
      </Event_column_append> 
     </observers> 
    </adminhtml_block_html_before> 
</events> 
  1. 您需要使用事件「adminhtml_block_html_before」爲您所使用的甚至沒有創建表單事件目的。這就是爲什麼你無法訪問表單對象。
  2. 創建此表單元素的塊是'adminhtml/permissions_tab_roleinfo'。
  3. 您使用的方法與觀察者中的方法不同。

希望有所幫助:)...

乾杯, Swapna

+0

真棒。這正是我所需要的。非常感謝你的朋友:))我以爲我在事件名稱有問題。另外還有一件事現在顯示在角色信息選項卡中。我想要角色資源選項卡中的網站字段。我怎麼做? – Palanikumar

+1

它會自動保存值嗎?或者我們是否需要通過_saveBefore事件來設置它? – MagePsycho