Php 使用Symfony中的请求参数创建指向同一页面的链接

Php 使用Symfony中的请求参数创建指向同一页面的链接,php,symfony1,symfony-1.4,httprequest,Php,Symfony1,Symfony 1.4,Httprequest,如何使用url\u for或link\u to helpers来创建指向同一页面的链接,并传递所有GET参数 我有一个搜索页面,它接受多个参数作为过滤器来隐藏某些结果。例如,search.html?query=abc&people=1&groups=0将搜索包含非组的“abc”的所有项目。因此,我想要一个切换这些过滤器的链接,将其余的参数不变地传递到当前页面。在上面的示例中,将创建指向search.html?query=abc&people=1&groups=1和search.html?quer

如何使用url\u for或link\u to helpers来创建指向同一页面的链接,并传递所有GET参数

我有一个搜索页面,它接受多个参数作为过滤器来隐藏某些结果。例如,
search.html?query=abc&people=1&groups=0
将搜索包含非组的“abc”的所有项目。因此,我想要一个切换这些过滤器的链接,将其余的参数不变地传递到当前页面。在上面的示例中,将创建指向
search.html?query=abc&people=1&groups=1
search.html?query=abc&people=0&groups=0
的链接

我想知道是否有办法将“this”指定为路由,这样,如果路由或页面发生更改,代码就不必更改


此外,如何将所有参数传递给助手
$sf_params
可用于访问所有参数,并且可以将“query_string”属性传递给助手,但是除了手动创建字符串外,是否有任何方法可以将这两个属性组合起来?

GET参数可以作为第三个参数中的数组传递给
link_to
方法,或第二个中的的
url\u。这说明如下:

link_to('Text to display', 'routename', array('group' => 0, 'people' => 1), $link_attributes);
url_for('routename', array('group' => 0, 'people' => 1));
这隐藏在源代码中。这里,
$params
是要添加到标记的GET参数和
$options
HTML属性的列表

function link_to2($name, $routeName, $params, $options = array())
function url_for2($routeName, $params = array(), $absolute = false)
可以将
$sf_params
函数转换为合适的数组,以便与
getAll()
一起传递。请参阅文档。请注意,这与Symfony的早期版本不同。还要注意,您可能必须从模板中调用
getRawValue()

$params = $sf_params->getRawValue()->getAll();

$sf\u context->getInstance()->getRouting()->getCurrentRouteName()
然后可以作为$routeName传递以获取当前路由。为此

将变量放入隐藏形式的数据类型中以传递它们

<form action="page.php" method="GET">
<input name="people" type="hidden" value="<?php echo htmlspecialchars($_GET['people'], ENT_QUOTES); ?>">
<input name="groups" type="hidden" value="<?php echo htmlspecialchars($_GET['groups'], ENT_QUOTES); ?>">
<input name="query" type="text" value="some_data">
<input name="send" type="submit" value="send">
</form>


谢谢,但我不是在寻找一个表单来发送数据,而是一个链接。是的,但切换这些过滤器的链接不会是。也许“this”(前面附加了@attended)的“$sf_context->getInstance()->getRouting()->getCurrentRouteName()”。@Tom这似乎让它忽略了传递的参数,很遗憾。是的,它本身就是这样。我正在考虑在上面的示例中使用它作为$routeName组件。@Tom啊,是的,它不需要在前面附加
@
。谢谢