带有 2 个参数的 symfony 重定向
Posted
技术标签:
【中文标题】带有 2 个参数的 symfony 重定向【英文标题】:symfony redirect with 2 parameters 【发布时间】:2010-12-02 14:09:40 【问题描述】:如何重定向到另一个传递 2 个或更多参数的操作?
这段代码:
$this->redirect('input/new?year=' . $year . '&month=' . $month);
网址中的结果:
http://.../input?year=2009&month=9
【问题讨论】:
【参考方案1】:嗯,这很正常,“重定向”重定向到绝对 URL。你可以这样做:
$this->redirect($this->generateUrl('default', array('module' => 'input',
'action' => 'new', 'year' => $year, 'month' => $month)));
【讨论】:
这有帮助。除了它生成像“http://.../input/new/year/2009/month/10”这样的url 如果你定义了一个路由,你可以用它的名字替换'default',如果需要的话,用路由的参数来改变第二个参数。 如果定义了路由,其实可以使用$this->redirectToRoute('routename', ['param1' => 'value', ['param2' => 'value'])
【参考方案2】:
在当前支持的 Symfony 版本(2.7+)it's even easier(另外,您还可以选择在末尾添加状态码):
return $this->redirectToRoute(
'default',
array('year' => $year, 'month' => $month),
Response::HTTP_MOVED_PERMANENTLY // = 301
);
【讨论】:
【参考方案3】:也可以使用redirect,指定路由名称和参数数组:
$this->redirect('route_name', array('year' => $year, 'month' => $month));
(在 Symfony 1.4 上测试)
【讨论】:
【参考方案4】:我认为这不是正常的 symfony 行为。你定义了一些路由规则吗?
你也试过这个吗:
$this->redirect('module/action?'.http_build_query($paramsArray));
【讨论】:
【参考方案5】:奇怪的东西。有没有
$this->redirect('@default?module=input&action=new&year=' . $year . '&month=' . $month);
为你工作?
【讨论】:
是的,这也有效。谢谢,但 xarch 的解决方案更漂亮 =)【参考方案6】:$this->redirect('input/new/year/' . $year . '/month/' . $month);
【讨论】:
这破坏了symfony的内部路由系统 它实际上没有。 symfony 的智能内部路由引擎正是这个重定向起作用的原因!但感谢您的反对;) 当你这样做时,你必须在调整相应的路由规则时更改所有链接/重定向以上是关于带有 2 个参数的 symfony 重定向的主要内容,如果未能解决你的问题,请参考以下文章