5

我已经创建了 adminhtml 模块,它工作正常。在创建新项目表单中有 4 个字段名称、图像、网址和电子邮件 ID;

我使用文件上传器上传图片。它工作正常,但我无法上传多张图片。

是否可以有多个图像上传器?这是我的简单图片上传器代码。

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

在此处输入图像描述

我需要帮助才能在我的自定义模块中拥有多个图像上传器。

4

3 回答 3

8

您需要为图像字段创建自定义渲染器。为此,在您的模块中创建此类:

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

于 2013-10-07T12:00:39.870 回答
1

我在我的网络应用程序中使用了这个代码,试试吧。

$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
        ));
于 2013-10-07T12:18:27.383 回答
-1

如果需要,我会提供可以免费下载的模块。

这是展览。 在此处输入图像描述

于 2013-12-24T09:02:09.750 回答