Magnento模块文件上传无效

时间:2016-07-13 16:03:42

标签: magento file-upload magento-1.9

有一个Magento模块,它接受输入并从该输入创建一个新项目。一切正常,我想添加一个字段,用于输入项目的图像。我确保添加相应的数据库列,并确保在需要的地方进行更改,但是当我通过新输入上传图像时,图像字段不会发送到我的帖子数据中。我仍然从表单中获取包含所有字段和值的对象,但始终省略File字段。使用$_FILE尝试访问它也不会产生任何结果。

以下是表格:

$form = new Varien_Data_Form(array(
        'id' => 'edit_form',
        'action' => $this->getUrl('*/*/edit', array('embroidery_id' =>    $this->getRequest()->getParam('embroidery_id'))),
        'method' => 'post',
        'enctype' => 'multipart/form-data'
    ));
    $form->setUseContainer(true);
    $this->setForm($form);

    $fieldset = $form->addFieldset(
        'general',
        array(
            'legend' => $this->__('Details')
        )
    );

以下是字段:

 $this->_addFieldsToFieldset($fieldset, array(
        'name' => array(
            'label' => $this->__('Name'),
            'input' => 'text',
            'required' => true,
        ),
        'file_t' => array(
            'label'     => $this->__('File path'),
            'required'  => false,
            'class'     => 'disable',
            'input'     => 'file',
            'name'      => 'file_t',
            'value'  => 'file_t',
        ),
    ));

任何帮助或指导将不胜感激。我已经做了一些谷歌搜索,并查看了添加文件上传字段的所有顶级结果,我完全复制了一些代码,但文件输入的post字段仍为空。

澄清:

_addFieldsToFieldset函数只是循环遍历fields数组,并用数据填充它们或将字段添加到$fieldset变量。我还尝试使用以下代码将字段直接添加到变量中,但它也不起作用。

$fieldset->addField('file_t', 'file', array(
      'label'     => $this->__('File path'),
      'required'  => false,
      'name'      => 'file_t',
));

这是处理保存的功能。这个功能确实有效,当我提交其他表单时已经多次尝试和测试,并且所有字段都已成功保存,并且所有内容都已通过,但每当我添加文件字段时,帖子数据看起来完全一样,并且一切仍然有效,它只是不通过帖子发送文件字段。

       if(isset($_FILES['file_t']['name'])){
            echo 'TRUE';
        }

        var_dump($this->getRequest()->getPost()); exit();

        $em->addData($postData);
        $em->save();

        $this->_getSession()->addSuccess(
            $this->__('The embroidery has been saved.')
        );

        // redirect to remove $_POST data from the request
        return $this->_redirect(
        'mu_em_admin/embroidery/edit', 
            array('embroidery_id' => $em->getID())
        );

我将很多代码简化为仅包含重要部分。我还有var_dump函数来解决代码问题。 var_dump的结果是发送的整个post数组,除了文件字段。

1 个答案:

答案 0 :(得分:0)

请尝试将此表单放在正文结束之前,然后提交。

你使用什么网络浏览器,以及哪个版本的PHP?