Пользовательский модуль Magento: загрузчик нескольких изображений в форме adminhtml


Я создал модуль adminhtml, он работает нормально. в форме создать новый элемент есть 4 поля имя, изображения, URL и идентификатор электронной почты;

Я использовал загрузчик файлов для загрузки изображений. он работает нормально, но я не могу загрузить несколько изображений.

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

  if(isset($data['image']) && $data['image'] != ''){
        $finderLink = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) .'finder/store_locator/'.$data['image'];
        $finderName = $data['image'];
        $fieldset->addField('imagelabel', 'label', array(
            'label' => Mage::helper('finder')->__('Location Image'),
            'name'  =>'image',
            'value'     => $finderLink,
            'after_element_html' => '<img src="'.$finderLink .'" alt=" '. $finderName .'" height="120" width="120" />',
        ));

        $fieldset->addField('image', 'image', array(
            'label' => Mage::helper('finder')->__('Change image'),
            'required' => false,
            'name' => 'image',
        ));

    }else{
        $fieldset->addField('image', 'image', array(
            'label' => Mage::helper('finder')->__('image'),
            'required' => false,
            'name' => 'image',
        ));
    }

enter image description here

Мне нужна помощь, чтобы в моем пользовательском модуле было несколько загрузчиков изображений.

Author: Jack Torris, 2013-10-07

3 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('helper_alias')->__('Image'),
            'title'     => Mage::helper('helper_alias')->__('Image'),
            'required'  => true,
        ));

Вот и все.
Не забудьте заменить заполнители ([Module] и другие) своими значениями.

В основном это способ переопределить/добавить любой тип ввода, который вы хотите. Создайте свой собственный класс, который должен расширять исходный входной класс (или Varien_Data_Form_Element_Abstract, если вы добавляете новый), и объявите его в верхней части _prepareForm

 8
Author: Marius, 2013-10-07 12:00:39

Я использовал этот код в своем веб-приложении, попробуйте.

$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
        ));
 1
Author: SYNC WebAgency, 2013-10-07 12:22:31

У меня был бы модуль, который вы могли бы скачать бесплатно, если хотите.

Это экспонат. enter image description here

 0
Author: Josua Marcel Chrisano, 2013-12-24 09:02:09