[英]Magento Image Field Admin Grid not Saving
I am having an issue here and i think it's basically just because i am missing a step. 我在这里遇到一个问题,我认为这基本上是因为我错过了一步。 When i save the file the image does save to the directory specified. 当我保存文件时,图像确实保存到指定的目录。 However, when i go to edit the form the image I uploaded isn't shown. 但是,当我去编辑表单时,未显示我上传的图像。
This is the first grid module i have built so i'm a bit unclear on how it works. 这是我构建的第一个网格模块,因此我不清楚它是如何工作的。
In Form.php my image field is as follows: 在Form.php中,我的图像字段如下:
$fieldset->addField('something_else', 'image', array(
'name' => 'something_else[something_else]',
'label' => 'Something Else',
'title' => 'Something Else',
'required' => false,
));
I have set enctype to be: 'enctype' => 'multipart/form-data' 我已将enctype设置为:'enctype'=>'multipart / form-data'
My controller has this code in the save action after if ($postData = $this->getRequest()->getPost()): 我的控制器在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]);
}
}
}
Is there something further I am missing to send the data back to form.php to display when viewing the form ? 在查看表单时,我是否还缺少将数据发送回form.php以显示的内容?
I hope this is enough info and thanks in advance. 我希望这是足够的信息,并在此先感谢。
Try this peace of code In your form for image field use this code : 尝试使用以下代码:在您的图像字段表单中,使用以下代码:
$fieldset->addField('filename', 'file', array(
'label' => Mage::helper('test')->__('File'),
'required' => false,
'name' => 'filename',
));
while in save funciton in controller use this 在控制器中保存功能时使用此
if(isset($_FILES['filename']['name']) && $_FILES['filename']['name'] != '') {
try {
/* Starting upload */
$uploader = new Varien_File_Uploader('filename');
// Any extention would work
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
$uploader->setAllowRenameFiles(false);
// Set the file upload mode
// false -> get the file directly in the specified folder
// true -> get the file in the product like folders
// (file.jpg will go in something like /media/f/i/file.jpg)
$uploader->setFilesDispersion(false);
// We set media as the upload dir
$path = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA)."test/" ;
//echo $path, $_FILES['filename']['name'];exit;
$uploader->save($path, $_FILES['filename']['name'] );
} catch (Exception $e) {
}
// echo $path;exit;
//this way the name is saved in DB
$data['image_path'] = $path.$_FILES['filename']['name'];
}
.Hope it will help you 希望对您有帮助
You have to set the field value in your form. 您必须在表单中设置字段值。 Like: 喜欢:
$data = array('something_else' => 'image/url');
$fieldset->addField('something_else', 'image', array(
'name' => 'something_else',
'label' => 'Something Else',
'title' => 'Something Else',
'required' => false,
));
$form->setValues($data);
Or: 要么:
$fieldset->addField('something_else', 'image', array(
'name' => 'something_else',
'label' => 'Something Else',
'title' => 'Something Else',
'required' => false,
'value' => 'image/url',
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.