Magento - 通过事件观察器修改表单Enctype

时间:2012-02-24 16:44:13

标签: forms events magento observer-pattern

我正在尝试为CMS页面添加额外的属性。我可以按照http://blog.flexishore.com/2011/08/add-custom-field-to-cms-page/的帮助添加这些额外的字段。

但是,我无法添加图像,因为CMS页面的表单没有enctype =“multipart / form-data”。为了解决这个问题,我不得不创建原始Magento文件的本地副本。 \应用\代码\本地\法师\ Adminhtml \块\ CMS \页\编辑\ form.php的

理想情况下,我想使用观察者注入enctype。我到处乱窜,没有找到合适的解决方案。

我希望能够添加类似$ form-> setHtmlAttributes('enctype','multipart / form-data')

  public function prepareFormMainTab(Varien_Event_Observer $observer)
  {
    $form = $observer->getEvent()->getForm();

    $fieldset = $form->addFieldset('fieldset', array(
        'legend' => 'CMS Extras',
        'class' => 'fieldset-wide'
            )
    );

    $fieldset->addField('imagefile', 'image', array(
        'name' => 'imagefile',
        'label' => 'Image',
        'title' => 'Image'
    ));
  }

2 个答案:

答案 0 :(得分:2)

</global>
    </events>
        <adminhtml_block_html_before>
            <observers>
                <event_column_append>
                    <type>model</type>
                    <class>observer_class</class>
                    <method>addFormEnctype</method>
                </event_column_append>
            </observers>
        </adminhtml_block_html_before>
    </events>
</global>

观察者方法应如下所示:

public function addFormEnctype($observer){
    $block = $observer->getEvent()->getBlock();
    if ($block instanceof Class_Where_Form_Is_Instaniated){
        $form = $observer->getBlock()->getForm();
        $form->setData('enctype', 'multipart/form-data');

        //depends of form what you wand modify
        $form->setUseContainer(true);
    }
}

答案 1 :(得分:-1)

$form->setEnctype('multipart/form-data')

$form->setData('enctype', 'multipart/form-data')