Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Subida de archivo opcional, comprobar si se subio

Estas en el tema de Subida de archivo opcional, comprobar si se subio en el foro de Symfony en Foros del Web. Hola, estoy leyendo http://gitnacho.github.io/symfony-do...ypes/file.html para hacer un formulario en elq ue uno de los campos es para subir un archivo, sin tener este campo en ...
  #1 (permalink)  
Antiguo 03/05/2013, 11:58
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años
Puntos: 1
Subida de archivo opcional, comprobar si se subio

Hola, estoy leyendo http://gitnacho.github.io/symfony-do...ypes/file.html para hacer un formulario en elq ue uno de los campos es para subir un archivo, sin tener este campo en ninguna entidad ni nada que ver con la base de datos sino manejado por el controlador todo lo referente al archivo, y el subir un archivo es opcional, lo que no se es como una vez recibo el formulario poder comprobar si se ha subido un archivo, y entonces proceder a moverlo, etc; o si no se subio y entonces no hacer nada con el archivo por como no se subio ninguno.
__________________
JHG
  #2 (permalink)  
Antiguo 03/05/2013, 12:13
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Subida de archivo opcional, comprobar si se subio

No basta con comprobar lo que retorna Form::getData ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 03/05/2013, 12:27
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años
Puntos: 1
Respuesta: Subida de archivo opcional, comprobar si se subio

Cita:
Iniciado por masterpuppet Ver Mensaje
No basta con comprobar lo que retorna Form::getData ?
Lo he pensado, pero pense si al comprobarlo podria dar o no error si no habi archivo subido y por eso abri este tema para preguntar por si alguien lo habia probado anteriormente o tenia más experiencia con Symfony, llevo tan solo una semana con Symfony.
__________________
JHG
  #4 (permalink)  
Antiguo 03/05/2013, 13:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Subida de archivo opcional, comprobar si se subio

Haz una prueba, no recuerdo exactamente pero si efectivamente hubo upload el tipo de objeto debería ser Symfony\Component\HttpFoundation\File\UploadedFile , con hacer un instanceof debería bastar.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 03/05/2013, 13:34
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años
Puntos: 1
Respuesta: Subida de archivo opcional, comprobar si se subio

Voy a probar a ver. Por cierto, ¿el campo file por defecto es opcional, o le tengo que indicar de alguna forma que pueden enviar el formulario aunque no lo rellenen?
__________________
JHG
  #6 (permalink)  
Antiguo 03/05/2013, 15:49
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Subida de archivo opcional, comprobar si se subio

En la doc. tienes las características de file
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 04/05/2013, 21:27
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años
Puntos: 1
Respuesta: Subida de archivo opcional, comprobar si se subio

He añadido al formulario:
Código:
->add('attachment', 'file')
Y produce el error:
Código:
Neither property "attachment" nor method "getAttachment()" nor method "isAttachment()" exists in class "Compartida\CompartidaBundle\Entity\Adsite"
Al parecer busca la propiedad attachment en la entidad, pero el archivo no quiero tenerlo en la base de datos relacionado de ninguna forma sino tratarlo aparte, ¿es esto posible?
__________________
JHG
  #8 (permalink)  
Antiguo 04/05/2013, 22:21
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Subida de archivo opcional, comprobar si se subio

Que la entidad tenga una propiedad no quiere decir que esta este mapeada a la bbdd, tu entidad debería tener una propiedad(con sus correspondientes accessor/mutator) que no se persiste.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 05/05/2013, 01:10
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años
Puntos: 1
Respuesta: Subida de archivo opcional, comprobar si se subio

Creo no entiendo aun del todo lo de entidad de Symfony. Yo quiero en el formulario subir un archivo o ninguno si no lo usan lo del archivo, pero luego el controlador usa el archivo de forma totalmente independiente de la entidad, no solo no esta mapeado en la bbdd sino que tampoco esta mapeado en la entidad ni siquiera necesariamente tendra relacion con la entidad, entonces, no entiendo bien lo de añadirle a la entidad esa propiedad y metodos que, al menos en el controlador yo, no voy a usar nunca.

Es decir, ¿cual es realmente la metafora que se sigue con lo de entidad en Symfony que me obliga a usar una propiedad aun en este caso que ni yo voy a usarla ni necesariamente guarda relacion? porque yo anteriormente he trabajado con Django, que si guardaba una relacion mas estrecha entre modelo y base de datos, y podia mandar mas cosas en el formulario y recuperarlo del request sin que hubiese que hacer nada al modelo etc. Pero por lo que veo en este aspecto difieren un poco Symfony y Django.
__________________
JHG
  #10 (permalink)  
Antiguo 05/05/2013, 07:41
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Subida de archivo opcional, comprobar si se subio

Hay similitudes con Django pero no son iguales, el fw no te obliga, es una forma de hacerlo, un formulario no tiene porque estar asociado a una entidad http://symfony.com/doc/current/book/...ithout-a-class y en caso de estarlo y no quieres mapear puedes pasarle la opción mapped a false(esta info también esta en el enlace)
__________________
http://es.phptherightway.com/
thats us riders :)
  #11 (permalink)  
Antiguo 15/05/2013, 03:24
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años
Puntos: 1
Respuesta: Subida de archivo opcional, comprobar si se subio

Intentando obtener la extensión de un archivo subido tengo el siguiente error:
Cita:
FatalErrorException: Error: Call to undefined method Symfony\Component\Form\Form::guessExtension() in /furanet/sites/compartida.es/web/htdocs/src/Compartida/CompartidaBundle/Controller/AdsController.php line 81
Lo raro es que si comento la linea de obtener la extension con:
Cita:
$extension = $form['attachment']->guessExtension();
y indico la extensión a mano de forma estatica como 'jpg' el resto funciona bien.
__________________
JHG

Etiquetas: subida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:16.