我有以下路线通过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()重定向?
答案 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')); }