Solución al editar formulario con un input file en Symfony3 y 2

Vamos a solucionar el siguiente error:

The form’s view data is expected to be an instance of class Symfony\Component\HttpFoundation\File\File, but is a(n) string. You can avoid this error by setting the “data_class” option to null or by adding a view transformer that transforms a(n) string to an instance of Symfony\Component\HttpFoundation\File\File.

Este error se da cuando intentamos actualizar los datos de un input file de un formulario en Symfony2 y Symfony3. Esto es porque le estamos pasando un string que es el value del campo file(al editar los datos con el formulario) y necesita una instancia del objeto File del HttpFoundation, es decir, necesita solamente algo en $_FILES, en fin, para arreglar esto, tenemos que tener un campo file definido en la clase del formulario tal que así:

	->add('image', FileType::class,array(
				"label" => "Imagen:",
				"attr" =>array("class" => "form-control"),
				"data_class" => null
			))

Con esto ya funcionaria correctamente, ya que le indicamos que no restrinja los datos que le puedan llegar de ese campo.

Más información:
http://stackoverflow.com/questions/14423265/symfony-2-form-exception-when-modifying-an-object-that-has-a-filepicture-fie

Victor

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

2 Comentarios

  1. Hola tengo una duda, tengo un formulario con varios campos entre ellos el de imagen, pero yo si quiero puedo editar cualquiera de ellos, menos la imagen entonces cuando se guardan los cambios el campo imagen quedara null, entonces como hago para validar que si no se selecciono alguna imagen me deje la que esta?

    Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *