如何以管理面板网格形式上传多张图片?


8

在这里,我想以magento的管理面板网格形式上传多个图像。我创建了以管理面板网格形式上传的图片。在这里,我附上了我的图片上传编码。

[....]

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

当我使用此参数更改多个上传图像时。'multiple'=> 'multiple' 这是我的代码:

 [....]

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

我也像这样把名称值作为array [] 'name' => 'image[]',。不,我没有任何结果,仍然会上传单个图像。如何在magento中创建多个图像上传概念。谁能帮我解决这个问题。请指导我。


1
我对这个问题也很感兴趣,快速浏览了一下,似乎这个障碍在产品的媒体上传器后面Mage_Adminhtml_Block_Media_Uploader。我会密切关注您的问题:)
桑德·曼格尔

multiple由于以下原因,添加无效:Varien_Data_Form_Element_Abstract::getHtmlAttributes。在这里,您可以找到允许设置的元素属性。也许您应该编写允许使用的自定义输入渲染器multiple
马里乌斯

1
嗨@SanderMangel ...谢谢你鼓励我..:)
VIVEK-MDU

Answers:


6

继续我的评论,这是您如何实现所需的方法。
您需要为图像字段创建自定义渲染器。为此,请在您的模块中创建此类:

<?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,在您当前的字段集中,所有类型为type的字段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('magentostudy_design')->__('design Image'),
            'title'     => Mage::helper('magentostudy_design')->__('design Image'),
            'required'  => true,
            'disabled'  => $isElementDisabled
        ));

而已。
不要忘记[Module]用您的值替换占位符(和其他)。
[编辑]
这基本上是重写/添加所需输入类型的方法。创建您自己的类,该类应该扩展原始输入类(或者Varien_Data_Form_Element_Abstract如果您添加一个新的输入类),并在其顶部声明_prepareForm


嗨@Marius ...谢谢您的正确指导。.我有一个疑问..这是参考类中的[Entity]和实体?你能解释一下吗?
VIVEK-MDU

@ VIVEK-MDU。实体就是您正在编辑的东西。它可以是产品,文章...表格的类名是什么?由此,我可以告诉你什么是实体。从理论上讲,它可以是任何东西。您甚至可以从类名称中删除该名称,但我在其中添加了该名称以保持代码的一致性。
马吕斯

@多个Marius我必须创建单独的文件按钮才能上传图像?或它如何处理多个图像
Keyur Shah 2014年

@Marius:这对我不起作用。仍加载一张图片。请对此有何建议?
Sukeshini 2015年

1
优秀的 !这个问题应该得到保护
Ahsan Horani

0

我使用这种方法来做同样的事情,但是使用模块, Aw_blog但是当我添加

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

我的帖子博客的页面表单为白色。

PS:现场上传一张图片是成功的,但对于多次上传却没有。

我的模块 在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.