我有一个模板,我在其中呈现一个包含表单的小部件:
{{ render(controller('ApplicationDemoBundle:Demo:newWidget', {'demo' : entity })) }}
newWidgetAction 调用 createAction:
public function createAction(Request $request)
{
$entity = new Demo();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('demo_show', array('id' => $entity->getId())));
}
return array(
'entity' => $entity,
'form' => $form->createView(),
)
// Something like this would be awesome with passing the form containing errors with
// return $this->redirect($this->getRequest()->headers->get('referer'));
}
想象一下提交的表单(用户在显示主题中操作)产生错误。这将返回到不显示完整布局的 newWidget 模板。
我现在的问题是:将错误从子控制器 (newWidget) 传递到主模板 (show) 的正确方法是什么?无需修改 showActions 函数参数以将 formerrors 传递到那里。
这个问题有一个类似的线程:Symfony2 render and form 在这种情况下使用了会话,但我很好奇这是否是要走的路。