Как загрузить изображения в пользовательский модуль, например, добавить продукт в админке magento?

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

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


person Neeraj Garg    schedule 21.12.2013    source источник


Ответы (1)


Поскольку вы используете загрузку файлов, вам необходимо добавить enctype="multipart/form-data" в файл 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']);
        }
    }

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

person Rajeev K Tomy    schedule 02.01.2014
comment
хорошо иметь только несколько файлов для загрузки, но поскольку пользователь запросил upload images in custom module like in add product in admin, это означает, что он хочет загрузить несколько изображений одновременно, что может иметь возможность для label, exclude< /i>, удалить - person Mohammad Faisal; 24.03.2014