2015-06-25 48 views
0

我想在Magento中创建一个管理模块。Magento自定义管理模块与图像文件

步骤1: ,其包含以下字段

enter image description here

步骤2:填充一些值和图像

enter image description here

步骤3:当我试图保存此项目,该项目已成功保存,但图像未在此处显示。但实际上,该图像被复制到我的Magento Media文件夹中。

第4步:保存成功的项目后,它显示这样

enter image description here

但实际上我想让它显示是这样的

enter image description here

这里是我的代码,请找到它。

_prepareForm() - 字段集代码:

$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('*/*/'); 
} 

错了,我在这里?

有什么想法?

如果有任何拼写错误,我真的很抱歉。

+0

请问您可以给我的代码..?到[email protected] –

回答

2

为了得到图像预览,您必须使用image字段类型,不file,像这样的(看第二个参数):

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

感谢您的回复。我已经尝试过这一个也仍然没有来.. – Naresh

+1

我只注意到,在你的控制器,你只需保存文件名。你必须在模型中保存整个路径(例如'$ model-> setImage($ path。$ model-> getId()。'。jpg');') – Kyriog

+0

是的,但我没有任何问题,因为那。 – Naresh

0

这是因为你必须存储你的图像中媒体文件夹中的子目录,所以你有你的像场的显示之前在这里EditAction SETVALUE().. 像()添加此代码是我的字段名profile_pic

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

或者你可以使用助手来预览图像

相关问题