8

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.

  • 1
    I'm really interested in this question as well, took a quick look and this block seems to be behind the media uploader for products Mage_Adminhtml_Block_Media_Uploader. I'll follow your question closely :) – Sander Mangel Oct 2 '13 at 7:10
  • Adding multiple has no effect because of this: Varien_Data_Form_Element_Abstract::getHtmlAttributes. In there you will find the element attributes that you are allowed to set. Maybe you should write you custom input renderer that allows multiple. – Marius Oct 2 '13 at 7:47
  • 1
    Hi @SanderMangel...Thank you for encourage me..:)- – VIVEK-MDU Oct 2 '13 at 9:57
6

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

  • Hi @Marius... Thank u for proper guide..I have one doubt..which is refer [Entity] and entity given in class? can you please explain it... – VIVEK-MDU Oct 2 '13 at 9:55
  • @VIVEK-MDU. Entity is what you are editing. it can be a product, an article...What is the class name of your form? From that I can tell you what entity should be. In theory it can be anything. You can even remove that from the class name but I added it there to keep a consistency in the code. – Marius Oct 2 '13 at 11:11
  • @Marius for multiple i have to create separate file button to upload image ? or how it can handle multiple image – Keyur Shah Mar 8 '14 at 7:58
  • @Marius : This didn't work for me. Still load one image upload. Please any suggestions on it? – Sukeshini Apr 7 '15 at 17:05
  • 1
    Excellent ! This question should be protected – Ahsan Horani Oct 20 '16 at 16:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.