2013-02-20 60 views
3

我在尝试在观察者中获取现有管理员表单中的字段集时遇到问题。 我收到表单,但是当我尝试获取字段集时出现错误: 致命错误:调用成员函数addField()在非对象上 当我直接添加这个新字段以形成一切时很好,除了它在场外。Magento:如何从观察者的admin中的现有表单中获取magento字段集

$form = $observer->getBlock()->getForm(); 
$fieldset = $form->getFieldset('fieldset_id'); 
$fieldset->addField('some_field', 'text', array(
    'name' => 'some_field', 
    'label' => Mage::helper('cms')->__('Some Field'), 
    'title' => Mage::helper('cms')->__('Some Field') 
) 
); 

回答

13

好的我做到了。这是我的不好。我采取了错误的块类型。以下是代码:

public function onAdminhtmlBlockHtmlBefore(Varien_Event_Observer $observer) 
{ 
    $block = $observer->getBlock(); 
    if (!isset($block)) return; 

    switch ($block->getType()) { 
    case 'adminhtml/some_edit_tab_main': 
    $form = $block->getForm(); 
     $fieldset = $form->getElement('base_fieldset'); 
     $fieldset->addField('some_field', 'text', array(
       'name' => 'some_field', 
       'label' => Mage::helper('cms')->__('Some Field'), 
       'title' => Mage::helper('cms')->__('Some Field') 
      ) 
     ); 
     break; 
    } 
} 
+2

此方法的事件别名是admin.xml中的adminhtml_block_html_before,它位于config.xml – jruzafa 2015-01-07 13:57:43