这应该很简单,而且我一直在谷歌搜索,但我一直在提出“路线”相关的建议。
我只想执行重定向到同一页面并修改其中一个查询字符串参数(清除一个或设置一个)。
我无法在任何地方看到这样做。
一个选项可能是手动完全生成URL并使用此猜测,但这似乎不是一个非常好的方法:
$this->router->generate("http://domain.com?a=1")
答案 0 :(得分:8)
我希望我明白你打算做什么......在你的控制器(?)中使用
$this->generateUrl(
$request->attributes->get('_route'),
array_merge(
$request->query->all(),
array('param' => 'val') // change the param
)
);
生成网址。
答案 1 :(得分:0)
此重定向的原因是什么?我想你想从控制器重定向,不是吗?我不确定你想要得到什么结果。您必须小心在控制器中重定向同一个动作控制器(重定向循环)。
但是,在控制器中你可以通过以下方式实现:
public function indexAction()
{
// ...
return $this->redirect($this->generateUrl($request->attributes->get('_route'), array('paramName' => $paramValue)));
}
在我看来,你应该考虑编写一个事件监听器:http://symfony.com/doc/current/book/internals.html#handling-requests