Subir imagenes a symfony
Tratando de subir imagenes a mi servidor con Symfony2, me tope con varios Bundles muy interesantes; el mas completo es SonataMediaBundle.Lastimosamente para lo que tenia pensado era demasiado...
Lo que deseaba hacer es subir varias imágenes cuando se enviaba el formulario, para esto se necesita un campo de tipo "file", pero solo se puede subiruno a la vez como explica el Cookbook
En este caso se necesita un array de campos "file". Para esto en nuestro Entity se define un atributo de tipo array:
Ahora para el Type:///////UnidadType.php
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('imagenes', 'collection', array(
'type' => 'file', 'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'options'=>array(
'required' => false, 'attr' => array('class' => 'unidades'),
)));
}
Como se puede ver, se define como 'collection' el tipo de datos para la variable $imagenes. La opcion prototype nospermite tener en el formulario el texto HTML del campo generado (en este caso el campo file); se genera algo como esto:
$$name$$
De este modo, mediante javascript (preferiblemente jQuery), podemoscrear mas campos 'file' e ir agregándolos al formulario con la siguiente función:
jQuery('#agregar_campo_file').click(function(e) {
e.preventDefault();
var files =jQuery('#unidad_imagenes');
var newWidget = files.attr('data-prototype');
newWidget = newWidget.replace(/\$\$name\$\$/g, files);
$('#unidad_imagenes').append(newWidget);
files++;
return false;
});
Dentro del HTML debemos tener un link:
Agregar Imagen
Al hacer clic sobre el enlace se iran agregando campos 'file' al formulario.
En la...
Regístrate para leer el documento completo.