Magento fieldset类型'image'不会显示在$ _FILES中

时间:2013-01-08 14:01:12

标签: image magento magento-1.7 image-uploading

我的Magento奇怪的事。我看不出问题。

我已经创建了一个模块。 (它扩展了CMS页面)

Observer.php我得到了:

$fieldset->addField('news_header_image', 'image', array(
    'name'      => 'news_header_image',
    'label'     => Mage::helper('cms')->__('News Header image 80x80 pics'),
    'title'     => Mage::helper('cms')->__('News Header image 80x80 pics'),
    'value'     => $model['news_header_image']
));

这可以很好,但是......

在我的observer.php public function savePage(Varien_Event_Observer $observer)
可以使用:$_POST['news_header_image'] $_FILES['news_header_image']['name'](甚至var_dump($_FILES))完全为空: -S

这里有什么问题?谢谢!

2 个答案:

答案 0 :(得分:1)

您需要将enctype添加到cms页面的<form>

/**
 * Add enctype to cms page edit form
 *
 * @param $observer Varien_Event_Observer
 *
 * @return void
 */
public function adminhtmlBlockHtmlBefore($observer)
{
    $block = $observer->getEvent()->getBlock();
    if ($block instanceof Mage_Adminhtml_Block_Cms_Page_Edit_Form) {
        $block->getForm()->setEnctype('multipart/form-data');
    }
}

并将其添加到您的配置中:

<config>
    <adminhtml>
        <events>
            <adminhtml_block_html_before>
                <observers>
                    <threeaart_pagetemplates>
                        <type>singleton</type>
                        <class>ThreeAArt_PageTemplates_Model_Observer</class>
                        <method>adminhtmlBlockHtmlBefore</method>
                    </threeaart_pagetemplates>
                </observers>
            </adminhtml_block_html_before>
        </events>
    </adminhtml>
</config>

答案 1 :(得分:0)

我认为您应该使用observer对象而不是直接通过_POST变量获取事件附加的任何值。

我不熟悉CMS事件,但如果您执行以下调试转储,以查看特定事件中可用的值。

$observer->getEvent()