我想做的是获取当前操作的路由以及所有路由和查询字符串参数,并将单个查询字符串参数更改为其他参数。如果在当前请求中设置了参数,我希望将其替换。如果没有,我想添加它。是否有类似这样的助手,还是我需要自己编写?
谢谢!
[edit:] 伙计,我不清楚我到底想做什么。我想为“此页面”生成 URL,但更改其中一个变量。想象一下我所在的页面是一个搜索结果页面,上面写着“没有结果,但请尝试其中一个”,然后是一堆链接。这些链接将包含所有搜索参数,但我会针对每个链接更改的参数除外。
最佳答案
编辑:
好的,我现在对你想要什么有了更好的了解。我不知道这是否是最好的方法,但你可以试试这个(在 View 中):
url_for('foo',
array_merge($sf_request->getParameterHolder()->getAll(),
array('bar' => 'barz'))
)
如果您经常使用它,我建议创建您自己的帮助器,其工作方式类似于 url_for
的包装器。
或者,如果您只需要请求参数的一个子集,请执行以下操作:
url_for('foo',
array_merge($sf_request->extractParameters(array('parameter1', 'parameter3')),
array('bar' => 'barz'))
)
(我以这种方式格式化代码以提高可读性)
原答案:
我不知道您想在哪里更改参数(在 Controller 中?),但是如果您可以访问当前的 sfRequest
对象,应该这样做:
$request->setParameter('key', 'value')
您可以通过以下方式定义您的操作来获取请求对象:
public function executeIndex($request) {
// ...
}
或者这个
public function executeIndex() {
$request = $this->getRequest();
}
关于php - 是否有一个 Symfony 助手来获取当前操作 URL 并更改一个或多个查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2002648/