5

オブザーバーの既存の管理フォームでフィールドセットを取得しようとすると問題が発生します。フォームを取得していますが、フィールドセットを取得しようとすると、素晴らしいエラーが発生します: 致命的なエラー: 非オブジェクトのメンバー関数 addField() への呼び出し この新しいフィールドをフォームに直接追加すると、それ以外はすべて問題ありませんそれはフィールドセットの外にあります。

$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')
  )
);
4

1 に答える 1

18

わかりました。それは私の悪いことでした。ブロックタイプを間違えました。コードは次のとおりです。

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;
    }
}
于 2013-02-20T18:28:06.423 に答える