Ver Mensaje Individual
  #14 (permalink)  
Antiguo 21/11/2014, 12:50
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Warning: spl_object_hash() expects parameter 1 to be object, integer given

Cita:
Iniciado por Dundee Ver Mensaje
Antes de nada gracias por tu paciencia , pero te cuento. Entiendo que con lo que he explicado y con el código que he pegado , pienses eso, porque está muy lejos de lo que pretendo que es esto:

1 Después de una consulta a la Db o bien de haberle pasado una ID por URL o por POST (aún no se), dicha ID será la de una RAMA ya existente.
Ok entiendo, las ramas padre ya están creadas previamente en la base de datos, solo requieres agregar una hija a cada rama padre.
Cita:
2 Ahora es cuando se crear la nueva RAMA (hija), que quiero relacionar con la otra ya existente (por eso la rama parent no puede generarse la ID de forma aleatoria ¿entiendes?.
si ya existen la rama padre es por que ya tiene un id relacionado en la base de datos por lo tanto el objeto ya conoce su id, solo requieres proporcionar el objeto que ya previamente seleccionaste en el paso 1.
Supongamos que pasaste el id en un listado previo.
Código PHP:
Ver original
  1. public function newBranchAction($id){
  2.         $em = $this->getDoctrine()->getManager();
  3.         //buscar la rama padre para este id
  4.         $parent = $em->getRepository('MainBundle:Book')->find($id);
  5.  
  6.         $book = new Book();
  7.         //asignas el parent
  8.         $book->setParentBranch($parent);
  9.  
  10.         $form = $this->createForm(new NewPhrase(),$book, array(
  11.                 'action' => $this->generateUrl('url_que_procesa_accion'),
  12.                 'method' => 'POST',
  13.             ));
  14.         //cuando se crea el formulario el campo parentBranch ya tiene el objeto que deseas
  15.         return $this->render('BookMainBundle:Default:new_branch.html.twig', array(
  16.                 'form' => $form->createView(),
  17.             ));
  18.  
  19.     }
Para manejar la inserción creas otro método
Código PHP:
Ver original
  1. public function createBranchAction(Request $request){
  2.         $book = new Book();
  3.  
  4.         $form = $this->createForm(new NewPhrase(),$book, array(
  5.                 'action' => $this->generateUrl('url_que_procesa_accion'),
  6.                 'method' => 'POST',
  7.             ));
  8.  
  9.         $form->handleRequest($request);
  10.  
  11.         if($form->isValid())
  12.         {
  13.             $em = $this->getDoctrine()->getManager();
  14.             $em->persist($book);
  15.             $em->flush();
  16.  
  17.             $this->get('session')->getFlashBag()->add(
  18.                 'success',
  19.                 'Se inserto correctamente'
  20.             );
  21.  
  22.             return $this->redirect($this->generateUrl('branch_show', array('id' => $book->getId())));
  23.         }
  24.  
  25.         return $this->render('BookMainBundle:Default:create_branch.html.twig', array(
  26.                 'book' => $book,
  27.                 'form' => $form->createView(),
  28.             ));
  29.  
  30.     }
Cuando el form hace el handleResquest obtiene los datos enviados por post y con estos el formulario se encarga de llenar la entidad. Si tienes una validación esta se ejecuta en la condición.
La parte del FlashBag lo puedes ver en la documentación: http://symfony.com/doc/current/book/...flash-messages
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.