簡體   English   中英

帶有圖像文件的Magento自定義管理模塊

[英]Magento Custom Admin Module with a Image File

我正在嘗試在Magento中創建一個管理模塊。

步驟1:其中包含以下字段

在此處輸入圖片說明

第2步:填充一些值和一個圖像

在此處輸入圖片說明

步驟3:當我嘗試保存該項目時,該項目已成功保存,但此處未顯示圖像。 但實際上,這些圖像已復制到我的Magento Media文件夾中。

步驟4:項目成功保存后,將顯示為

在此處輸入圖片說明

但實際上我希望它顯示出這樣的內容

在此處輸入圖片說明

這是我的代碼,請找到它。

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

我在這里做錯了什么?

有任何想法嗎 ?

如果有拼寫錯誤,我真的很抱歉。

為了獲得圖像預覽,您必須使用image字段類型,而不是file ,如下所示(請看第二個參數):

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

這是因為您已將圖像存儲在媒體文件夾的子目錄中,因此在顯示之前必須設置圖像字段的setvalue()。像在EditAction()中一樣,在此處添加此代碼是我的字段名稱profile_pic

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

或者,您可以使用幫助器預覽該圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM