2012-05-01 28 views
0

我想在填写表格时创建一个确认窗口。我如何做确认窗口?

现在,我填写表单,如果表单有效,则实体将被保留并返回一个以我的实体作为参数的视图。但这不是我想要的。

如果表单有效,我不想坚持实体。如果它是有效的,将不得不使用我的参数(实体)显示一个视图,然后如果我的用户单击按钮确认,坚持实体并重定向到其他视图。如果我的用户点击按钮返回,我使用JavaScript函数:javascript:history.back(1)

我该怎么做?

回答

0

一个简单的方法是将绑定实体存储在会话中(闪存),并在确认持久性后进行检索。

在你的 “saveForm” 行动:

if ($form->isValid()) { 
    $myEntity = $form->getData(); 
    $this->get('session')->setFlash('my_entity', $myEntity); 

    return $this->render('MyBundle:Controller:confirmation.html.twig', array(
     'entity' => $myEntity 
    )); 
} 

而在你的 “confirmSave” 行动:

$myEntity = $this->get('session')->getFlash('my_entity'); 
$this->em->persist($myEntity); 
$this->em->flush(); 

这只是一个简单的例子一个它需要adaped到您的项目。

+0

这样做,EntityManager尝试持续一个空实体并显示此异常:NULL 500内部服务器错误 - InvalidArgumentException – Biruwon

+0

您的Flash var是否为空? –