有一个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数组,除了文件字段。
答案 0 :(得分:0)
请尝试将此表单放在正文结束之前,然后提交。
你使用什么网络浏览器,以及哪个版本的PHP?