[英]Symfony2 embedded controller and form validation issue
我有一個編輯特許經營權的模板。 在這個模板中,我有兩件事:一個嵌入式控制器,它向我顯示一個匯總表,其中包含已經存儲在數據庫中的所有特許經營權,每行都有一個“編輯”按鈕,表格中填充了特許經營的數據我是目前正在編輯
問題是,當我處理表單並且驗證失敗時,嵌入式控制器創建的匯總表向我顯示我嘗試使用我在表單中輸入的值修改的特許經營權,即使它沒有通過驗證和數據庫從未更新。
該代碼有一些西班牙語單詞,所以,只是為了澄清,“franquicia”的意思是“特許經營”
呈現和驗證表單的方法是:
public function editarAction($superusuario_id, $franquicia_id)
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getEntityManager();
$franquicia = $em->getRepository('FacturaBundle:Franquicia')->findOneById($franquicia_id);
$form = $this->createForm(new FranquiciaType(), $franquicia);
if($request->getMethod() == 'POST')
{
$form->bindRequest($request);
if($form->isValid())
{
$em = $this->getDoctrine()->getEntityManager();
$em->persist($franquicia);
$em->flush();
return $this->redirect($this->generateUrl('s_listar_franquicias', array('superusuario_id'=>$superusuario_id)));
}
}
return $this->render('FacturaBundle:Superusuario:franquicia-editar.html.twig',
array('superusuario_id'=>$superusuario_id,
'franquicia_id'=>$franquicia_id,
'form'=>$form->createView(),
'franquicia'=>$franquicia ));
}
嵌入式控制器使用的方法是:
public function listarTodasAction($superusuario_id)
{
$em = $this->getDoctrine()->getEntityManager();
$franquicias = $em->getRepository('FacturaBundle:Franquicia')->findAll();
return $this->render('FacturaBundle:Superusuario:franquicia-listar-todas.html.twig', array('superusuario_id'=>$superusuario_id, 'franquicias'=>$franquicias));
}
我沒有粘貼模板的代碼,因為它太長了但是如果需要我會這么做。
誰能幫我?
基本問題是$ form-> bindRequest實際上用已發布的信息更新$ franquicia。 D2緩存所有內容,以便稍后更改顯示。 使用refresh將其設置回原始數據:
if($form->isValid())
{
...
}
$this->getDoctrine()->getEntityManager()->refresh($franquicia);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.