Symfony 2重定向路由

时间:2014-04-07 23:48:13

标签: symfony routing routes

我有以下路线通过get:

工作
CanopyAbcBundle_crud_success:
  pattern:  /crud/success/
  defaults: { _controller: CanopyAbcBundle:Crud:success }
  requirements:
    _method:  GET

Canopy是命名空间,捆绑包是AbcBundle,控制器Crud,动作是成功的。

以下失败:

return $this->redirect($this->generateUrl('crud_success'));

Unable to generate a URL for the named route "crud_success" as such route does not exist.
500 Internal Server Error - RouteNotFoundException 

如何使用generateUrl()重定向?

2 个答案:

答案 0 :(得分:21)

使用php app/console cache:clear

清除缓存
return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success'));

如果需要参数传递如下:

return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success', array('param1' => $param1)), 301);

答案 1 :(得分:5)

YAML的第一行是应与路由器组件一起使用的路由名称。您尝试为错误的路线名称生成网址,您的网址为CanopyAbcBundle_crud_success,而不是crud_success。 此外,generateUrl()方法执行它所说的内容:它根据路由名称和参数(它们被传递)生成一个URL。要返回403重定向响应,您可以使用$this->redirect($this->generateUrl('CanopyAbcBundle_crud_success'))基类中内置的Controller,也可以像这样返回Symfony\Component\HttpFoundation\RedirectResponse的实例:

public function yourAction()
{
    return new RedirectResponse($this->generateUrl('CanopyAbcBundle_crud_success'));
}