Question

Here, I would like to upload multiple image in admin panel grid form in magento. I create images upload in admin panel grid form. Here I attached my image upload coding.

[....]

$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
        ));
[....]

when i change multiple upload image by using this argument. 'multiple'=> 'multiple' Here my code:

 [....]

    $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
            ));
    [....]

And also i put name value as array[] just like this 'name' => 'image[]',. Nope, i am not getting any result, still single image will be uploaded. How to create multiple image upload concept in magento. Can any one Help me to solve this problem.Please guide me.

Was it helpful?

Solution

Continuing my comment, here is how you can achieve what you need.
You need to create your custom renderer for the image field. For this create this class in your module:

<?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'));
    }
}

Now at the top of your _prepareForm (where you add your fields) add this line before adding any field:

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

Or if you want to be "politically correct" add it this way:

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

This will tell Magento that in your current fieldset, all the fields with type image should be rendered by your own class.

Now you can add your field like similar to how you did it:

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

That's it.
Don't forget to replace the placeholders ([Module] and others) with your values.
[EDIT]
This is basically the way to override/add any input type you want. Create your own class that should extend the original input class (or Varien_Data_Form_Element_Abstract if you add a new one) and declare it at the top of _prepareForm

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top