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

8

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

[....]

$fieldset->addField('image', 'image', array(
            'name'      => 'image',
            'label'     => Mage::helper('magentostudy_design')->__('design Image'),
            'title'     => Mage::helper('magentostudy_design')->__('design Image'),
            'required'  => true,
            'disabled'  => $isElementDisabled
        ));
[....]

когда я меняю несколько загружаемых изображений с помощью этого аргумента. 'multiple'=> 'multiple' Вот мой код:

 [....]

    $fieldset->addField('image', 'image', array(
                'name'      => 'image',
                'multiple'  => 'multiple',
                'mulitple'  => true,
                'label'     => Mage::helper('magentostudy_design')->__('design Image'),
                'title'     => Mage::helper('magentostudy_design')->__('design Image'),
                'required'  => true,
                'disabled'  => $isElementDisabled
            ));
    [....]

А также я поставил значение имени как массив [], как это 'name' => 'image[]',. Нет, я не получаю никакого результата, все еще одно изображение будет загружено. Как создать концепцию загрузки нескольких изображений в magento. Может ли кто-нибудь помочь мне решить эту проблему. Пожалуйста, направьте меня.

Вивек-MDU
источник
1
Я тоже очень заинтересован в этом вопросе, быстро взглянул, и этот блок, похоже, стоит за загрузчиком медиафайлов для продуктов Mage_Adminhtml_Block_Media_Uploader. Я буду внимательно следить за вашим вопросом :)
Сандер Мангель
Добавление multipleне имеет никакого эффекта из - за этого: Varien_Data_Form_Element_Abstract::getHtmlAttributes. Там вы найдете атрибуты элементов, которые вам разрешено устанавливать. Может быть, вы должны написать свой пользовательский рендерер ввода, который позволяет multiple.
Мариус
1
Привет @SanderMangel ... Спасибо, что поддержали меня ..:) -
VIVEK-MDU

Ответы:

6

Продолжая мой комментарий , вот как вы можете достичь того, что вам нужно.
Вам нужно создать свой собственный рендерер для поля изображения. Для этого создайте этот класс в вашем модуле:

<?php 
class [Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image extends Varien_Data_Form_Element_Image{
    //make your renderer allow "multiple" attribute
    public function getHtmlAttributes(){
        return array_merge(parent::getHtmlAttributes(), array('multiple'));
    }
}

Теперь в верхней части вашего _prepareForm(где вы добавляете свои поля) добавьте эту строку перед добавлением любого поля:

$fieldset->addType('image', '[Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image');

Или, если вы хотите быть «политкорректным», добавьте это так:

$fieldset->addType('image', Mage::getConfig()->getBlockClassName('[module]/adminhtml_[entity]_helper_image'));

Это скажет Magento, что в вашем текущем наборе полей все поля с типом image должны отображаться вашим собственным классом.

Теперь вы можете добавить свое поле так же, как вы это сделали:

$fieldset->addField('image', 'image', array(
            'name'      => 'image[]', //declare this as array. Otherwise only one image will be uploaded
            'multiple'  => 'multiple', //declare input as 'multiple'
            'label'     => Mage::helper('magentostudy_design')->__('design Image'),
            'title'     => Mage::helper('magentostudy_design')->__('design Image'),
            'required'  => true,
            'disabled'  => $isElementDisabled
        ));

Вот и все.
Не забудьте заменить заполнители ( [Module]и другие) вашими значениями.
[РЕДАКТИРОВАТЬ]
Это в основном способ переопределить / добавить любой тип ввода, который вы хотите. Создайте свой собственный класс, который должен расширить исходный входной класс (или, Varien_Data_Form_Element_Abstractесли вы добавите новый), и объявите его в верхней части_prepareForm

Мариус
источник
Привет, @Мариус ... Спасибо тебе за правильное руководство ... У меня есть одно сомнение ... что такое ссылка [Сущность] и сущность, данная в классе? Можете ли вы объяснить это ...
VIVEK-MDU
@ Вивек-МД. Сущность - это то, что вы редактируете. это может быть продукт, статья ... Как называется класс вашей формы? Исходя из этого, я могу сказать, какой должна быть сущность. В теории это может быть что угодно. Вы даже можете удалить это из имени класса, но я добавил его там, чтобы сохранить последовательность в коде.
Мариус
@Marius для нескольких я должен создать отдельную кнопку файла, чтобы загрузить изображение? или как он может обрабатывать несколько изображений
Кейур Шах
@Marius: это не сработало для меня. Загрузите еще одну загрузку изображений. Пожалуйста, какие-либо предложения по этому поводу?
Sukeshini
1
Отлично ! Этот вопрос должен быть защищен
Ahsan Horani
0

Я использую этот метод, чтобы сделать то же самое, но с модулем, Aw_blogно когда я добавляю

$fieldset->addType('image', Mage::getConfig()->getBlockClassName('aw_blog/adminhtml_blog_helper_image'));

Форма страницы для блога моего поста белая.

PS: поле загрузки одного изображения успешно, но для нескольких нет.

MyModule введите описание изображения здесь

Мохамед Амин Ландольси
источник