【发布时间】:2013-04-24 12:03:39
【问题描述】:
我在这里遇到问题,我认为这基本上只是因为我错过了一步。当我保存文件时,图像确实保存到指定的目录。但是,当我去编辑表单时,我上传的图像没有显示出来。
这是我构建的第一个网格模块,所以我有点不清楚它是如何工作的。
在 Form.php 中我的图片字段如下:
$fieldset->addField('something_else', 'image', array(
'name' => 'something_else[something_else]',
'label' => 'Something Else',
'title' => 'Something Else',
'required' => false,
));
我已将 enctype 设置为:'enctype' => 'multipart/form-data'
我的控制器在 if ($postData = $this->getRequest()->getPost()): 之后的保存操作中有此代码:
if(isset($_FILES['something_else']))
{
foreach($_FILES['something_else']['name'] as $imgname => $img)
{
if($_FILES['something_else']['name'][$imgname] != '' && isset($_FILES['something_else']['name'][$imgname]))
{
$imgArray = array(
'name' => $_FILES['something_else']['name'][$imgname],
'type' => $_FILES['something_else']['type'][$imgname],
'tmp_name' => $_FILES['something_else']['tmp_name'][$imgname],
'error' => $_FILES['something_else']['error'][$imgname],
'size' => $_FILES['something_else']['size'][$imgname]
);
$uploader = new Varien_File_Uploader($imgArray);
$uploader->setAllowedExtensions(array('jpg','jpeg','png','gif'));
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(false);
$path = Mage::getBaseDir('media') . DS . 'somethingelse' . DS;
$name = str_replace(' ', '_', $_FILES['something_else']['name'][$imgname]);
$uploader->save($path, $name);
$bazData[$imgname] = 'somethingelse' . DS . $uploader->getCorrectFileName($name);
}
else
{
unset($bazData[$imgname]);
}
}
}
在查看表单时我还缺少什么将数据发送回 form.php 以显示吗?
我希望这是足够的信息,并提前致谢。
【问题讨论】:
-
打印 POST 数组以在保存前检查图像存在字段。要么你得到这个领域,要么没有在帖子中??
-
图像数组的 var_dump 返回数组 (5) { ["name"]=> string(17) "How-tostyle_2.jpg" ["type"]=> string(10) "image /jpeg" ["tmp_name"]=> string(26) "/private/var/tmp/phpZqvj12" ["error"]=> int(0) ["size"]=> int(304120) }
标签: image magento upload module save