Пользовательский модуль 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', )); } 

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

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

Solutions Collecting From Web of "Пользовательский модуль Magento: несколько загрузчиков изображений в форме adminhtml"

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

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

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

 $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 )); 

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

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