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

Problema con Update en objeto desde formulario(no modifica)

Estas en el tema de Problema con Update en objeto desde formulario(no modifica) en el foro de Symfony en Foros del Web. Buenos dias, toda la semana casi sin preguntar nada!!(Tampoco he podido hacer mucho caso...) En esta ocacion tengo problemas al hacer el update. Tengo varios ...
  #1 (permalink)  
Antiguo 18/11/2011, 17:23
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 18 años, 8 meses
Puntos: 2
Problema con Update en objeto desde formulario(no modifica)

Buenos dias, toda la semana casi sin preguntar nada!!(Tampoco he podido hacer mucho caso...)

En esta ocacion tengo problemas al hacer el update. Tengo varios problemas, el primero de ellos es que querria saber si es posible(o recomendable) hacer el insert y el update desde un formulario con la misma accion. Ejemplo, tengo la accion empresa_details y ahora mismo si le paso un 0 como parametro(no se pasar parametros nulos), me hace un insert y si el paso un identificador valido me muestra el formulario con los datos rellenos, pero al darle al botno no se como decirle en el controlador que no es un insert si no un Update.
El segundo problema, es que de todas formas algo hago mal al hacer el update, porque he modificado el codigo para que no me haga el insert sino que me haga un Update la accion empresa_details, me muestra los datos pero si los modifico y le doy al boton de guardar no me lo registra en la bd. Este es mi codigo en el controlador de empresas.
Código PHP:
Ver original
  1. /**
  2.      * @Route("/details/{pidEmpresa}", name="_empresa_details")
  3.      * @Template()
  4.      */
  5.     public function detailsAction($pidEmpresa){
  6.         $em = $this->get('doctrine.orm.entity_manager');
  7.        
  8.         $empresa = new \Acme\DemoBundle\Entity\CliClientes();
  9.         $form = $this->get('form.factory')->create(new AddEmpresaForm(),$empresa);
  10.  
  11.         $request = $this->get('request');
  12.      
  13.         $empresas = $em->getRepository('Acme\DemoBundle\Entity\CliClientes')->find($pidEmpresa);
  14.         $form = $this->createForm(new AddEmpresaForm(), $empresas);
  15.  
  16.          if ($request->getMethod() == 'POST') {
  17.             $form->bindRequest($request);
  18.  
  19.             if ($form->isValid()) {
  20.              // perform some action, such as save the object to the database
  21.              
  22.              $em->flush();
  23.  
  24.             return new RedirectResponse($this->generateUrl('_empresa_list'));
  25.         }
  26.     }
  #2 (permalink)  
Antiguo 19/11/2011, 04:08
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
Respuesta: Problema con Update en objeto desde formulario(no modifica)

Cita:
Iniciado por utopiko Ver Mensaje
[...]
Código PHP:
Ver original
  1. /**
  2.      * @Route("/details/{pidEmpresa}", name="_empresa_details")
  3.      * @Template()
  4.      */
  5.     public function detailsAction($pidEmpresa){
  6.         $em = $this->get('doctrine.orm.entity_manager');
  7.        
  8.         $empresa = new \Acme\DemoBundle\Entity\CliClientes();
  9.         $form = $this->get('form.factory')->create(new AddEmpresaForm(),$empresa);
  10.  
  11.         $request = $this->get('request');
  12.      
  13.         $empresas = $em->getRepository('Acme\DemoBundle\Entity\CliClientes')->find($pidEmpresa);
  14.         $form = $this->createForm(new AddEmpresaForm(), $empresas);
  15.  
  16.          if ($request->getMethod() == 'POST') {
  17.             $form->bindRequest($request);
  18.  
  19.             if ($form->isValid()) {
  20.              // perform some action, such as save the object to the database
  21.              
  22.              $em->flush();
  23.  
  24.             return new RedirectResponse($this->generateUrl('_empresa_list'));
  25.         }
  26.     }
Imagino que en estas líneas tendrás que poner la función que realiza el update.
Código PHP:
Ver original
  1. if ($form->isValid()) {
  2.     // perform some action, such as save the object to the database
  3.     //algo así    
  4.     $em->getRepository(/* Entity */)->update(/* datos post */);
  5.  
  6.     $em->flush();
  7.     return new RedirectResponse($this->generateUrl('_empresa_list'));
  8. }
Donde la función update procesa los datos recibidos. (la función la tienes que crear)

No conozco Symfony (creo que es Symfony ) pero creo que anda por ahí la cosa.

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #3 (permalink)  
Antiguo 19/11/2011, 04:29
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 18 años, 8 meses
Puntos: 2
Respuesta: Problema con Update en objeto desde formulario(no modifica)

Es que no consigo hacer que eso funcione, ademas no se como traerme los datos del post...Y no encuentro nada de informacion...
  #4 (permalink)  
Antiguo 19/11/2011, 11:49
 
Fecha de Ingreso: enero-2009
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Problema con Update en objeto desde formulario(no modifica)

dentro del isValid.

Código PHP:
Ver original
  1. $em = $this->getDoctrine()->getEntityManager();
  2. $empresas = $em->getRepository('AcmeStoreBundle:Product')->find($pidEmpresa);
  3.  
  4.    // Verificas si el id existe.
  5.     if (!$empresas) {
  6.         throw $this->createNotFoundException('No product found for id '.$pidEmpresa);
  7.     }
  8.  
  9.     $empresas->setAtributo('Mi atributo');
  10.     $em->flush();


Luego para obtener los valores de formularios a "mano". usar
getData() y setData(). dentro del isValid.

Tal que...


Código PHP:
Ver original
  1. $entity = $form->getData();
  2.  
  3. $nombre = $entity->getAttribute();

Aun que no es necesario, Symfony hace toda la magia de peticiones por POST, por ti, pero antes de eso debes de tener bien configurado:

Formulario Type,
Entidad,
La Vista en Twig o Php.

Por cierto, te estás guiando del Manual Oficial? es la mejor manera de hacer las cosas.

http://udelabs.com/symfony/book/doctrine.html, y también deberías de poner que el problema se trata de symfony2, casi ni lo leo tu mensaje !

Saludos.

Etiquetas: objeto, update
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:42.