简体   繁体   中英

Magento Custom Admin Module with a Image File

I am trying to create an admin module in Magento.

Step 1: which contains the following fields

在此处输入图片说明

Step 2 : Filled some values and a Image

在此处输入图片说明

Step 3 : When i am trying to Save this Item, the item is saved Successfully but image is not showing here. But actually that images is copied in my Magento Media folder.

Step 4 : After the item saved successfully it is showing like this

在此处输入图片说明

But Actually i want it to show something like this

在此处输入图片说明

Here is My Code Please Find it.

_prepareForm() - fieldset code :

$fieldset->addField('image', 'file', array(
    'label'     => Mage::helper('modulename')->__('Image'),
    'name'      => 'image',
    'note' => '(*.jpg, *.png, *.gif)',
));

_prepareForm() :

<?php
class Namespace_ModuleName_Block_Adminhtml_Measurement_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
  protected function _prepareForm()
  {
      $form = new Varien_Data_Form(array(
                                      'id' => 'edit_form',
                                      'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
                                      'method' => 'post',
                                      'enctype' => 'multipart/form-data'
                                   )
      );
      $form->setUseContainer(true);
      $this->setForm($form);
      return parent::_prepareForm();
  }
}
?>

saveAction() :

public function saveAction() {
    if ($data = $this->getRequest()->getPost()) {
        $model = Mage::getModel('modulename/modulename');
        $model->setData($data)->setId($this->getRequest()->getParam('id'));
        try {
            if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
                $model->setCreatedTime(now())
                    ->setUpdateTime(now());
            } else {
                $model->setUpdateTime(now());
            }
            $model->save();
            if(isset($_FILES['image']['name']) and (file_exists($_FILES['image']['tmp_name']))) {
                try {
                    $uploader = new Varien_File_Uploader('image');
                    $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); // or pdf or anything
                    $uploader->setAllowRenameFiles(false);
                    // setAllowRenameFiles(true) -> move your file in a folder the magento way
                    // setAllowRenameFiles(true) -> move your file directly in the $path folder
                    $uploader->setFilesDispersion(false);
                    $path = Mage::getBaseDir('media') . '/modulename_images/' ;
                    $uploader->save($path, $model->getId().'.jpg');
                    $model->setImage($model->getId().'.jpg');
                    $model->save();
                }catch(Exception $e) {
                    print_r($e);
                    die;
                }
            }
            else {       
                if(isset($data['image']['delete']) && $data['image']['delete'] == 1)
                $data['image_main'] = '';
                else
                unset($data['image']);
            }

            // Mage::getModel('modulename/flatrates')->saveMultipleFlatrates($data, $model->getId(),$this->getRequest()->getParam('cat_id'));
            Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('modulename')->__('Item was successfully saved'));
            Mage::getSingleton('adminhtml/session')->setFormData(false);
            if ($this->getRequest()->getParam('back')) {
                $this->_redirect('*/*/edit', array('id' => $model->getId()));
                return;
            }
            $this->_redirect('*/*/');
            return;
        } catch (Exception $e) {
            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            Mage::getSingleton('adminhtml/session')->setFormData($data);
            $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
            return;
        }
    }
    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('modulename')->__('Unable to find item to save'));
    $this->_redirect('*/*/');
}

Anything wrong i did here ?

any ideas ?

If any spell mistakes i am really sorry.

In order to get the image preview, you have to use the image field type, not file , like this (look at second parameter):

$fieldset->addField('image', 'image', array(
    'label'     => Mage::helper('modulename')->__('Image'),
    'name'      => 'image',
    'note' => '(*.jpg, *.png, *.gif)',
));

This is because of you have store your image in Subdirectory of media folder so you have to setvalue() of your image field before display.. like in EditAction() add this code here is my field name profile_pic

if($model->getProfilePic())
{
  $model->setProfilePic('testimonial/'.$model->getProfilePic());
}

OR you can use helper to preview that image

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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