Como fazer upload de várias imagens no formulário de grade do painel de administração?

8

Aqui, eu gostaria de fazer upload de várias imagens no formulário de grade do painel de administração no magento. Crio o upload de imagens no formulário de grade do painel do administrador. Aqui anexei a minha codificação de upload de imagens.

[....]

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

quando altero várias imagens de upload usando esse argumento. 'multiple'=> 'multiple' Aqui meu código:

 [....]

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

E também coloquei o valor do nome como array [] assim 'name' => 'image[]',. Não, não estou obtendo nenhum resultado, ainda será carregada uma única imagem. Como criar vários conceitos de upload de imagens no magento. Qualquer um pode me ajudar a resolver este problema.

VIVEK-MDU
fonte
11
Também estou realmente interessado nesta questão, dei uma olhada rápida e esse bloco parece estar por trás do uploader de mídia para produtos Mage_Adminhtml_Block_Media_Uploader. Vou seguir a sua pergunta de perto :)
Sander Mangel
Adicionando multiplenão tem efeito por causa disso: Varien_Data_Form_Element_Abstract::getHtmlAttributes. Lá você encontrará os atributos do elemento que você pode definir. Talvez você deva escrever um renderizador de entrada personalizado que permita multiple.
Marius
11
Oi @SanderMangel ... Obrigado por me incentivar ..
:)

Respostas:

6

Continuando meu comentário , aqui está como você pode conseguir o que precisa.
Você precisa criar seu representante personalizado para o campo de imagem. Para isso, crie esta classe no seu módulo:

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

Agora, na parte superior do seu _prepareForm(onde você adiciona seus campos), adicione esta linha antes de adicionar qualquer campo:

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

Ou se você quiser ser "politicamente correto", adicione-o desta maneira:

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

Isso informará ao Magento que no seu conjunto de campos atual, todos os campos com o tipo imagedevem ser renderizados por sua própria classe.

Agora você pode adicionar seu campo como semelhante ao que você fez:

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

É isso aí.
Não se esqueça de substituir os espaços reservados ( [Module]e outros) pelos seus valores.
[EDIT]
Esta é basicamente a maneira de substituir / adicionar qualquer tipo de entrada que você desejar. Crie sua própria classe que deve estender a classe de entrada original (ou Varien_Data_Form_Element_Abstractse você adicionar uma nova) e declare-a no topo de_prepareForm

Marius
fonte
Oi @Marius ... Obrigado pelo guia adequado .. Tenho uma dúvida .. qual é a referência [Entidade] e a entidade dada na aula? você pode, por favor, explicar isso ...
VIVEK-MDU 2/13
@ VIVEK-MDU. Entidade é o que você está editando. pode ser um produto, um artigo ... Qual é o nome da classe do seu formulário? A partir disso, posso lhe dizer qual entidade deve ser. Em teoria, pode ser qualquer coisa. Você pode até remover isso do nome da classe, mas eu o adicionei lá para manter uma consistência no código.
Marius
@ Marius para vários eu tenho que criar botão de arquivo separado para fazer upload de imagem? ou como ele pode lidar com várias imagens
Keyur Shah
@ Marius: Isso não funcionou para mim. Ainda carregue um upload de imagem. Por favor, alguma sugestão sobre isso?
Sukeshini 7/04
11
Excelente! Esta questão deve ser protegida
Ahsan Horani 20/16
0

Eu uso esse método para fazer a mesma coisa, mas com módulo, Aw_blogmas quando adiciono o

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

O formulário da página do blog da minha postagem é branco.

PS: o campo upload de uma imagem é um sucesso, mas para várias não.

mymodule insira a descrição da imagem aqui

Mohamed Amine Landolsi
fonte