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

Error al setear un objecto en Symfony2

Estas en el tema de Error al setear un objecto en Symfony2 en el foro de Symfony en Foros del Web. Hola, Espero que me puedan ayudar con mi problema. Tengo dos entidades, sucursal y vehiculo, estas dos no estan relacionadas entre ellas, pero si estan ...
  #1 (permalink)  
Antiguo 20/07/2012, 23:08
 
Fecha de Ingreso: julio-2012
Mensajes: 9
Antigüedad: 11 años, 9 meses
Puntos: 0
Error al setear un objecto en Symfony2

Hola,

Espero que me puedan ayudar con mi problema.

Tengo dos entidades, sucursal y vehiculo, estas dos no estan relacionadas entre ellas, pero si estan relacionadas con la entidad Comuna.

Tengo un formulario donde el usuario ingresa un vehiculo, y también elige una sucursal en el mismo formulario, donde al enviar el formulario, en el controlador debo recuperar la comuna a la cual pertenece la sucursal e ingresarla a vehiculo.

Cuando llega el id de la sucursal al controlador, realizo un find de la siguiente manera:

Código PHP:
$sucursal $em->getRepository('SertecomvendoautosBundle:Sucursal')->find($request->get('id_sucursal')); 
Lo anterior me devuelve un proxy object con la sucursal encontrada, entonces debo recuperar la comuna y setearla a la entidad vehiculo

Código PHP:
$entity->setCo($sucursal->getCo()); 
Pero el error se lanza en el $form->bindRequest($request);

Código PHP:
 $form->bindRequest($request); 
Esta la excepción

Código:
Catchable Fatal Error: Argument 1 passed to Sertecom\vendoautosBundle\Entity\Vehiculo::setCo() must be an instance of Sertecom\vendoautosBundle\Entity\Comuna, null given, called in /var/www/vendor/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on

Dejo el código completo del controlador:

Código PHP:
public function createAction()
    {
        
$entity  = new Vehiculo();
        
        
$em $this->getDoctrine()->getEntityManager();
        
$request $this->getRequest();
        
$form    $this->createForm(new VehiculoType(), $entity);
        
$sucursal $em->getRepository('SertecomvendoautosBundle:Sucursal')->find($request->get('id_sucursal'));
           
        
$entity->setCo($sucursal->getCo());
        
$form->bindRequest($request);

         if (
$form->isValid()) {
            
            
$em->persist($entity);
            
$em->flush();

          
            return 
$this->redirect($this->generateUrl('vehiculo_imagen', array('idve' => $entity->getVeId())));
        }

        return array(
            
'entity' => $entity,
            
'form'   => $form->createView()
        );

Espero que me puedan ayudar

De antemano gracias.

Saludos
  #2 (permalink)  
Antiguo 21/07/2012, 06:52
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Error al setear un objecto en Symfony2

El error es claro, estas pasando null donde debería ser una Comuna, estas seguro que la Sucursal que obtienes tiene una Comuna asociada ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 21/07/2012, 12:22
 
Fecha de Ingreso: julio-2012
Mensajes: 9
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error al setear un objecto en Symfony2

No, por que el siguiente código, me devuelve un proxy object de la comuna, pero si pongo en el find un id que no existe me devuelve un null.

Código PHP:
 $sucursal $em->getRepository('SertecomvendoautosBundle:Sucursal')->find($request->get('id_sucursal')); 
Asi me retorna lo anterior, si hago un get en las comunas de la entidad sucursal

Código PHP:
print_r($sucursal->getCo()); 
Código PHP:

ProxiesSertecomvendoautosBundleEntityComunaProxy Object
(
    [
_entityPersister:ProxiesSertecomvendoautosBundleEntityComunaProxy:private] => DoctrineORMPersistersBasicEntityPersister Object
        
(
            [
_class:protected] => DoctrineORMMappingClassMetadata Object
                
(
                    [
reflFields] => Array
                        (
                            [
coNombre] => ReflectionProperty Object
                                
(
                                    [
name] => coNombre
                                    
[class] => SertecomvendoautosBundleEntityComuna
                                
)

                            [
coCreatedAt] => ReflectionProperty Object
                                
(
                                    [
name] => coCreatedAt
                                    
[class] => SertecomvendoautosBundleEntityComuna
                                
)

                            [
coUpdatedAt] => ReflectionProperty Object
                                
(
                                    [
name] => coUpdatedAt
                                    
[class] => SertecomvendoautosBundleEntityComuna
                                
)

                            [
coId] => ReflectionProperty Object
                                
(
                                    [
name] => coId
                                    
[class] => SertecomvendoautosBundleEntityComuna
                                
)

                            [
pro] => ReflectionProperty Object
                                
(
                                    [
name] => pro
                                    
[class] => SertecomvendoautosBundleEntityComuna
                                
)

                        )
........... 
Obviamente no voy a poner el objeto entero.

Saludos.
  #4 (permalink)  
Antiguo 21/07/2012, 12:33
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Error al setear un objecto en Symfony2

Si la Comuna puede ser null tienes que permitirlo en el setter, en caso contrario tienes que validar antes.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 21/07/2012, 12:40
 
Fecha de Ingreso: julio-2012
Mensajes: 9
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error al setear un objecto en Symfony2

Código PHP:
public function setCo(SertecomvendoautosBundleEntityComuna $co null 
Si claro, pero el objeto que estoy seteando no es un null

No será por el proxy object?

Gracias por la respuesta

Saludos
  #6 (permalink)  
Antiguo 21/07/2012, 13:51
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Error al setear un objecto en Symfony2

mmm, PHP no miente..., estas pasando un null según dice la excepción.

Edit: con la firma del método tal cual lo acabas de postear, te da algún error ?
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 21/07/2012 a las 14:25
  #7 (permalink)  
Antiguo 23/07/2012, 14:38
 
Fecha de Ingreso: diciembre-2010
Mensajes: 8
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Error al setear un objecto en Symfony2

Muy buenas:

No sé si te seré de ayuda.

Antes de hacer el $form->bindRequest($request) deberías saber si existen datos procedentes del formulario, es decir:

Código PHP:
Ver original
  1. if($request->getMethod() == 'POST')
  2. {
  3.     $form->bindRequest($request);
  4.  
  5.     ...
  6.  
  7. }

Etiquetas: doctrine, doctrine2, symfony2
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:51.