简体   繁体   English

Magento Image Field管理网格未保存

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM