我正在使用Symfony2框架,我想用表單中的數據更新實體。使用表單值更新實體Symfony2框架
我使用相同的控制器來填充窗體的一些數據,同時我正在使用它來在數據庫中進行更新查詢。如果我使用$ em-> persist($ foo),它確實保存了我想要的內容,但我不想保存它,因爲它是新數據,我想更新。
閱讀symfony2的書,它說$ em-> flush()是我們需要的,所以我們可以更新。
我想我真的很接近,但我當然錯過了一些東西。
下面的代碼:
public function actualizarCurriculoAction($id){
$curriculo = new Curriculittle();
$form = $this->createForm(new CurriculittleType(), $curriculo);
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
$lselect=$this->get('request')->request->get('lselect');
$edad=$this->get('request')->request->get('edad');
$estado=$this->get('request')->request->get('estadoselect');
if ($form->isValid()) {
$curriculo->setUsalentes($lselect);
$curriculo->setEdad($edad);
$curriculo->setEstado($estado);
$em = $this->getDoctrine()->getEntityManager();
/*em->persist($curriculo);*/
$em->flush(); /*the above line is in comment because I just want to update*/
/*At this point the entity should be updated, but it's not*/
/*Llamando a la plantilla de listados*/
$curriculos = $em->getRepository('SofLaSoflaBundle:Curriculittle')->findAll();
/*Enviando los datos a la plantilla y Renderizandola*/
return $this->render('SofLaSoflaBundle:Default:listado.html.twig', array('curriculos' => $curriculos));
}
}
$em = $this->getDoctrine()->getEntityManager();
$trabajador=$em->getRepository('SofLaSoflaBundle:Curriculittle')->find($id);
return $this->render('SofLaSoflaBundle:Default:curriculo.html.twig', array('form' => $form->createView(), 'curriculo' => $trabajador));
}
因此,需要幫助這個請。 :)
嗨richsage!非常感謝。它確實工作:)。 –
@FranciscoOchoa的樂趣:-) – richsage
由於Symfony2.3,你應該使用'handleRequest'而不是'bindRequest' http://symfony.com/doc/current/book/forms.html#handling-form-submissions –