2013-12-21 4 views
1

Я работаю над версией magento 1.7. У меня есть пользовательское расширение. В этом мне нужно добавить опцию для загрузки нескольких изображений, похожих на расширение продукта по умолчанию для magento.Как загрузить изображения в пользовательском модуле, например, добавить продукт в admin magento?

Как я могу это достичь?

ответ

0

Поскольку вы используете загрузку файлов, вам необходимо добавить ENCTYPE = «многослойную/форма-данные» в файле edit.php. (очень важно)

Теперь для того, чтобы загрузить образ, ваша форма файл должен выглядеть следующим образом

<?php 
class Example_Imageuploader_Block_Adminhtml_Imageuploader_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form 
{ 
    protected function _prepareForm() 
    { 
     $form = new Varien_Data_Form(); 
     $this->setForm($form); 
     $fieldset = $form->addFieldset('Images', array('legend'=>Mage::helper('banner')->__('Example Image'))); 
     $fieldset->addField('image_1', 'file', array(
      'label'  => Mage::helper('imageuploader')->__('Upload'), 
      'value' => 'image_1', 
      'disabled' => false, 
      'readonly' => true,     
     )); 
     /* 
      repeat this file field instant according to your need 
     */      
    return parent::_prepareForm();              
    } 

} 

Сейчас в контроллере -> saveAction() добавить эти коды

<?php 
    public function saveAction() 
    { 
     if(isset($_FILES['image_1']['name']) and (file_exists($_FILES['image_1']['tmp_name']))) 
     {        
      try 
      { 
       $path = Mage::getBaseDir('media') . DS . 'banner' . DS; 
       $uploader = new Varien_File_Uploader('image_1'); 

       $uploader 
      ->setAllowedExtensions(array('jpg','png','gif','jpeg')); 
       $uploader->setAllowRenameFiles(false); 
       $uploader->setFilesDispersion(false); 
       $destFile = $path.$_FILES[$image]['name']; 
       $filename = $uploader->getNewFileName($destFile); 
          $uploader->save($path, $filename); 

       $data['img'] = $_FILES['image_1']['name']; 
      } 
      catch(Exception $e) 
      { 

      } 
     } 
     else 
     {              
      if(isset($data['image_1']['delete']) && $postData['image_1']['delete'] == 1) 
       $data['image_1'] = ''; 
      else 
       unset($data['image_1']); 
     } 
    } 

Все готово! Я думаю, что это даст базовую идею загрузки изображения. Используя это, создайте свой собственный модуль. Удачи

+1

его хорошо иметь только для нескольких файлов, которые будут загружены, но поскольку пользователь попросил «загрузить изображения в пользовательский модуль, например, добавить продукт в админ», значит, он хочет загружать несколько изображений одновременно, опция для * label *, * exclude *, * remove * –