我在 symfony2 中有一个控制器,如下所示,如果用户表单有效,它将重定向到其他链接,但如果出现错误,它将保留在同一页面中并显示错误。当客户端验证被禁用并且只有服务器端验证正在检查错误时,这是一个简单的一般场景。
/**
* Creates a new User entity.
*
* @Route("/create", name="admin_user_create")
* @Method("post")
* @Template("UserBundle:User:new.html.twig")
*/
public function createAction()
{
$entity = new User();
$request = $this->getRequest();
$form = $this->createForm(new UserType() , $entity);
$form->bindRequest($request);
if($form->isValid())
{
// DO SOMETHING ...
return $this->redirect($this->generateUrl('some_link' , array( 'user_id' => $entity->getId() )));
}
// If the form is NOT valid, it will render the template and shows the errors.
return array(
'entity' => $entity ,
'form' => $form->createView()
);
}
场景将如下所示:
- 用户为表单输入了一些无效数据
- 用户提交表单
- 控制器检查表单是否有效
由于它无效,它将呈现模板,在这种情况下
@Template("UserBundle:User:new.html.twig")
- 浏览器中的路线将是
/create
- 如果用户
click
在浏览器链接上而不是它post
会得到一个错误
我怎样才能解决这个问题 ?我必须再次重定向吗?既然方法是post
可以重定向吗?