jueves, 25 de septiembre de 2014

Upload Files and persist to Doctrine Entity - Parte II - UserType

Si observamos el formulario de creación de usuario luego de generar el crud veremos que el campo path es un input text, debemos modificarlo para que acepte subida de archivos, esto se logra modificando el FormType.

nano src/Petramas/MainBundle/Form/UserType.php

en el campo path quedará registrada una cadena que corresponde a la ruta (si lo que queremos es guardar en una carpeta todos los documentos subidos por el usuario) o nombre final de la imágen ya que previamente modificamos el nombre original por un hash.

Ésto le da un nivel más de confidencialidad a la data, pero lo más importante es que ya no es necesario sanitizar el nombre de la imágen ya que, para nuestros fines, no necesitamos mostrar la imágen con su nombre original, para ello almacenamos el nombre original en un campo aparte "original".

Pero si cambiamos el tipo del campo path por file así:

->add('path', 'file')


entonces nuestro campo $path no podrá almacenar la cadena del nombre del archivo generado según la lógica que hemos planteado en Upload Files and persist to Doctrine Entity - Parte I - User Entity, ya que luego del postPersist es cuando se sube realmente la imagen a su destino final.

Para esto nos sirve el campo virtual file, por esto, cambiamos el campo path por file y le asignamos el tipo file así:

->add('file', 'file')