Foros del Web » Programando para Internet » PHP »

Symfony getClientOriginalName error

Estas en el tema de Symfony getClientOriginalName error en el foro de PHP en Foros del Web. Hola, tengo un problema con symfony, estoy tratando de subir imagenes al servidor y me tira el siguiente error @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original ...
  #1 (permalink)  
Antiguo 17/05/2014, 10:28
 
Fecha de Ingreso: noviembre-2013
Mensajes: 84
Antigüedad: 10 años, 5 meses
Puntos: 1
Symfony getClientOriginalName error

Hola, tengo un problema con symfony, estoy tratando de subir imagenes al servidor y me tira el siguiente error

Código PHP:
Ver original
  1. FatalErrorException: Error: Call to a member function getClientOriginalName() on a non-object in C:\xampp\htdocs\directorio\src\Infhotel\ModelBundle\Entity\Categoria.php line 34


Ya he mirado y la variable que le entra a la función esta perfecta, pero no se que pasara :S

Este es el código donde tengo la funcion


Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace Infhotel\ModelBundle\Entity;
  4.  
  5. use Doctrine\ORM\Mapping as ORM;
  6.  
  7. /**
  8.  * Categoria
  9.  */
  10. class Categoria
  11. {
  12. //----------------Modify-----------------------
  13.        public function __toString() {
  14.            return $this->getHotel() ? $this->getHotel() : '';
  15.        }
  16.        
  17.        
  18.        static $UPLOAD_DIR = 'imagenes/';
  19.        
  20.         public function uploadFoto($basepath) {
  21.         if (null === $this->imagen) {
  22.             return;
  23.         }
  24.         if (null === $basepath) {
  25.             return;
  26.         }
  27.  
  28.         $nombre_archivo = $this->obtenerNuevoNombreArchivo();
  29.         $this->imagen->move(self::$UPLOAD_DIR, $nombre_archivo);
  30.         $this->setImagen($nombre_archivo);
  31.     }
  32.  
  33.     public function obtenerNuevoNombreArchivo() {
  34.         $this->imagen->getClientOriginalName();
  35.         $nombre_original = $this->imagen->getClientOriginalName();
  36.         $nombre_archivo_array = explode('.', $nombre_original);
  37.         $extension_archivo = $nombre_archivo_array[count($nombre_archivo_array) - 1];
  38.         $nombre_archivo = rand(1, 9999) . date('YmsHis') . '.' . $extension_archivo;
  39.         return $nombre_archivo;
  40.     }


Gracias por cualquier ayuda :).
  #2 (permalink)  
Antiguo 17/05/2014, 11:15
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Symfony getClientOriginalName error

Esta como raro porque el problema es que $this->imagen es igual a null

Donde mas se hace $this->setImagen() ademas de en uploadFoto() ? porque ahi no hay riesgo alguno ya que chequeas si es null


Yo esos controles de is_empty() o is_null() sobre $this->imagen los haria en un solo lugar para evitar no solo duplicar codigo sino errores:

en setImagen()


Y pues... la pregunta del millon de pesos argentinos (1 dolar) ..... $this->imagen es un objeto ??? o sea creas un objeto con sus propiedades en setImagen() o en donde ?
__________________
Salu2!
  #3 (permalink)  
Antiguo 17/05/2014, 19:34
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Symfony getClientOriginalName error

Lo mas probable es que este queriendo manejar los archivos con la misma propiedad.
Usa una para los archivos que vas a recivir y otra para guardar la ruta que vas a almacenar que en tu caso es imagen.

Código PHP:
Ver original
  1. private $imagen
  2.  
  3. // no hagas mapeo de esta propiedad
  4. private $file

En tu Form Type usa la propiedad file.

Código PHP:
Ver original
  1. $builder->add('file', 'file');

Ya lo demas es que crees el metodo para la propiedad y que espere un tipo UploadedFile
Código PHP:
Ver original
  1. public setFiles(UploadedFile $file = null)
  2. {
  3.       $this->file = $file;
  4. }

Otras opción es que uses un bundle para gestionar esto, pero eso ya depende de tus necesidades
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 17/05/2014, 20:39
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Symfony getClientOriginalName error

Veo que @hhs tiene mas idea ... no conocer Doctrine me imposibilita ayudarte
__________________
Salu2!

Etiquetas: symfony, variable
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 15:17.