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

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

Может кто-нибудь помочь мне?

Ниже моя форма:

protected function _prepareForm() {

    $form = new Varien_Data_Form();
    $this->setForm($form);
    $fieldset = $form->addFieldset('book_form', array('legend' => Mage::helper('test')->__('Book Content')));

    $fieldset->addField('title', 'text', array(
        'label' => Mage::helper('test')->__('Title'),
        'class' => 'required-entry',
        'required' => true,
        'name' => 'title[]',
    ));
    $categoryArray = Mage::getSingleton('test/category')->getOptionArray();
    $fieldset->addField('category_id', 'select', array(
        'label' => Mage::helper('test')->__('Category'),
        'required' => true,
        'class' => 'required-entry',
        'name' => 'category_id[]',
        'values' => $categoryArray,
    ));

    **$fieldset->addField('image', 'file', array(
        'label' => Mage::helper('test')->__('Image'),
        'name' => 'image[]',
        'multiple' => 'multiple',
        'mulitple' => true,
    ));**

    $fieldset->addField('priority', 'text', array(
        'label' => Mage::helper('lookbook')->__('Order of Display'),
        'name' => 'priority[]',
    ));
    $fieldset->addField('hiddenData', 'hidden', array(
        'class' => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK) . '_' . Mage::registry('book_data')->getId(),
    ));

    $statusArray = Mage::getSingleton('lookbook/status')->getOptionArray();
    $fieldset->addField('publish', 'select', array(
        'label' => Mage::helper('lookbook')->__('Status'),
        'name' => 'publish[]',
        'values' => $statusArray,
    ));

    if (Mage::getSingleton('adminhtml/session')->getBookData()) {
        $form->setValues(Mage::getSingleton('adminhtml/session')->getBookData());
        Mage::getSingleton('adminhtml/session')->setBookData(null);
    } elseif (Mage::registry('book_data')) {
        $form->setValues(Mage::registry('book_data')->getData());
    }


    return parent::_prepareForm();
}

person Neeraj Garg    schedule 18.12.2013    source источник
comment
Можете ли вы показать структуру вашего расширения, что даст лучший вид   -  person Rohit Goel    schedule 18.12.2013
comment
загружать изображения к продуктам? по категориям? куда?   -  person Nikitas    schedule 18.12.2013
comment
Я обновил вопрос. Мне нужно загрузить несколько изображений, когда я нажимаю кнопку обзора. Это настраиваемый модуль.   -  person Neeraj Garg    schedule 18.12.2013
comment
Может быть, это немного поможет. magento.stackexchange.com/a/8823/146   -  person Marius    schedule 18.12.2013
comment
@Marius: - Большое спасибо за помощь. Работает отлично.   -  person Neeraj Garg    schedule 19.12.2013
comment
вы тоже попробуйте это stackoverflow.com/questions/19223886/   -  person urfusion    schedule 19.12.2013


Ответы (2)


Посмотрите в Mage_Adminhtml_controllers_Catalog

Вы найдете ссылки на атрибут media_image

|| $attribute->getFrontend()->getInputType() == 'media_image'

Вы можете следовать примерам в adminhtml для сетки, которая позволяет загружать несколько изображений для внешнего интерфейса. На стороне бэкэнда вам нужны либо собственные модели ресурсов, либо исходная модель бэкэнда, объявленная для атрибута, которая может следовать моделям бэкэнда и внешнего интерфейса изображений каталога... в этих классах вы найдете примеры того, как работает бэкэнд-модель. с сохранением изображений.

person mprototype    schedule 24.12.2013

form.phtml

<form action="<?php echo Mage::getBaseUrl()."multipleimageupload/index/save"; ?>" method="POST" enctype="multipart/form-data">
    <input type="file" name="filename[]" multiple="multiple"> 
    <input type="submit" name="save">
</form>

**

Действие

**

public function saveAction(){

        $count= count($_FILES['filename']['name']);

        for ($i=0; $i < $count; $i++) { 

            if(isset($_FILES['filename']['name'][$i]) and (file_exists($_FILES['filename']['tmp_name'][$i]))){                             
                try{
                        // $_FILES['filename']['name'][$i];
                        $path = Mage::getBaseDir('media') . DS . 'multipleimageupload' . DS;
                        // $uploader = new Varien_File_Uploader('filename');
                        $uploader = new Varien_File_Uploader(
                            array(
                                'name' => $_FILES['filename']['name'][$i],
                                'type' => $_FILES['filename']['type'][$i],
                                'tmp_name' => $_FILES['filename']['tmp_name'][$i],
                                'error' => $_FILES['filename']['error'][$i],
                                'size' => $_FILES['filename']['size'][$i]
                            )
                        );

                        $uploader->setAllowedExtensions(array('jpg','png','gif','jpeg'));
                        $uploader->setAllowRenameFiles(false);
                        $uploader->setFilesDispersion(false);
                        $destFile = $path.$_FILES['filename']['name'][$i];
                        $filename = $uploader->getNewFileName($destFile);
                        $uploader->save($path, $filename);
                        $data['img'] = $_FILES['filename']['name'][$i];
                    }catch(Exception $e) {
                        // echo "<pre>";
                        // print_r($e);

                    }
                }else{
                    if(isset($data['filename']['delete'][$i]) && $postData['filename']['delete'][$i] == 1)
                    $data['filename'] = '';
                    else
                    unset($data['filename'][$i]);
                }
            }
        }
person Saphal Jha    schedule 21.04.2017