我想创建可以上传多个图像的自定义模块,如产品。我创建了一个自定义模块,但它只上传一张图像。
表单.php
$fieldset->addField('filename', 'image', array(
'label' => Mage::helper('footertop')->__('File'),
'name' => 'filename',
));
我想创建可以上传多个图像的自定义模块,如产品。我创建了一个自定义模块,但它只上传一张图像。
表单.php
$fieldset->addField('filename', 'image', array(
'label' => Mage::helper('footertop')->__('File'),
'name' => 'filename',
));
我认为您需要为图像字段创建自定义渲染器。为此,在您的模块中创建此类:
class [YOURNamespace]_[YOURModule]_Block_Adminhtml_[YOUREntity]_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', '[YOURNamespace]_[YOURModule]_Block_Adminhtml_[YOUREntity]_Helper_Image');
或者,如果您想“政治正确”,请以这种方式添加:
$fieldset->addType('image', Mage::getConfig()->getBlockClassName('[YOURmodule]/adminhtml_[YOURentity]_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('YOURmodule')->__('Select Image'),
'title' => Mage::helper('YOURmodule')->__('Can select multiple images'),
'required' => true,
'disabled' => $isElementDisabled
));
就是这样。不要忘记用您的值替换占位符([YOURModule] 和其他)。