Symfony 2重定向路由

pig*_*fox 11 routing routes symfony

我有以下路由通过get工作:

CanopyAbcBundle_crud_success:
  pattern:  /crud/success/
  defaults: { _controller: CanopyAbcBundle:Crud:success }
  requirements:
    _method:  GET
Run Code Online (Sandbox Code Playgroud)

其中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 
Run Code Online (Sandbox Code Playgroud)

如何使用generateUrl()重定向?

Gar*_*ara 21

使用清除缓存 php app/console cache:clear

return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success'));
Run Code Online (Sandbox Code Playgroud)

如果需要参数传递如下:

return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success', array('param1' => $param1)), 301);
Run Code Online (Sandbox Code Playgroud)


kix*_*kix 5

YAML的第一行是应与路由器组件一起使用的路由名称.您正在尝试为错误的路由名称生成URL,您的是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'));
} 
Run Code Online (Sandbox Code Playgroud)