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


Здесь я хотел бы загрузить несколько изображений в виде сетки панели администратора в 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[]',. Нет, я не получаю никакого результата, все равно будет загружено одно изображение. Как создать концепцию загрузки нескольких изображений в магенто. Может ли кто-нибудь помочь мне решить эту проблему.Пожалуйста, направь меня.

Author: VIVEK-MDU, 2013-10-02

2 answers

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

<?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

 6
Author: Marius, 2020-06-15 08:30:17

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

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

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

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

Мой модуль enter image description here

 1
Author: Mohamed Amine Landolsi, 2020-03-07 05:48:39