cómo seleccionar varias imágenes con el campo de formulario magento
-
13-12-2019 - |
Pregunta
Tengo la pregunta que estoy publicando es tonta y la hice muchas veces en este foro, pero ninguna de las respuestas publicadas por otros resolvió mi problema.
Mi pregunta es que tengo un conjunto de campos de archivos y necesito cargar imágenes con varias, así que las usé.
$fieldset->addField('optionimage', 'file', array(
'label' => $helper->__('Option Image'),
'required' => false,
'name' => 'optionimage[]',
'multiple'=>true,
'multiple'=>'multiple'
));
pero no pude agregar varios campos anteriores
Solución
Por defecto no puedes hacer esto.
expliqué aquí ¿Por qué no es posible sacarlo de la caja y cómo puede hacerlo funcionar?
La explicación es para entradas de imágenes pero funciona igual para campos de imágenes.
La idea es que "múltiple" no sea un atributo permitido para las entradas de archivos.
Necesitas crear tu renderizador de entrada ganado que se extienda Varien_Data_Form_Element_File
(o Image
si lo necesita para imágenes) y haga que lo permita multiple
como atributo.
para que tu renderizador pueda verse así
<?php
class [Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image extends Varien_Data_Form_Element_Image //or _File if you are not uploading images
{
//make your renderer allow "multiple" attribute
public function getHtmlAttributes(){
return array_merge(parent::getHtmlAttributes(), array('multiple'));
}
}
En su formulario de edición agregue esto:
$fieldset->addType('image', '[Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image');
o si no quieres subir solo imágenes
$fieldset->addType('file', '[Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_File');
y luego agregue su campo así:
$fieldset->addField(
'id_here',
'image', //or file
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,
)
);