2015-10-19 53 views
0

在Symfony 2.7应用程序中,使用Twig,我想创建生成分页按钮。使用额外的GET参数重新生成当前网址

我有一个搜索页面,带有可选的GET参数:

  • 空:

    WWW [...] COM /搜索

  • 按名称搜索:

    www。[...] com/search ?name = john

  • 按名称和排序按相关搜索:。。?

    WWW [...] COM /搜索名称=约翰&排序=相关

  • 搜索按名称和排序按相关性,第2页:?

    WWW [...] COM /搜索名称=约翰&排序=相关& p = 2

超过10个可能的参数,所以我不想用所有可选参数定义一个路径模式。

然后,当我显示搜索结果,我想下一个页面链接:。。?

WWW [...] COM /搜索名称=约翰&排序=相关& P = 2

WWW。[...]。com /搜索?名称=约翰&排序=相关& p = 3

WWW。[...]。com /搜索?名称=约翰&排序=相关性& P = 4

在TWIG模板我尝试了这样:

{% set param = app.request.get('_route_params') %} 
{% if param is null %} 
    {% set param = {'p': page} %} 
{% else %} 
    {% set param = param|merge({'p': page}) %} 
{% endif %} 

<a href="{{ path(request.get('_route'), param) }}">{{ page }}</a> 

但是,由于可选参数没有在路由中定义,它们不是在request.GET中( '_ route_params' )和建立的链接只定义为?p = X

是否有任何其他方式来获取查询GET参数,并编辑它们与其他p创建一个新的url?

+0

你在布线路径有哪些?类似于/ search/{name}/{sort}/{p}' – scoolnico

+0

因为我想隐藏所有空白搜索字词以拥有漂亮的小网址。 – Alsatian

回答

2

在你的树枝模板,你可以使用:

app.request.query.all 

,让您的所有查询参数

+0

由于错误的测试,我首先认为它很好。但是没有(在2.7版本中使用** request.all **)。请求全部不包含额外的GET参数(未在路由中定义)。 – Alsatian

+0

对不起,不理解您的消息 –

+0

我可以访问** request.all **(request.query.all不在Symfony 2.7中)。但** request.all **不包含我的GET参数。可能是因为路线中没有定义。 – Alsatian

相关问题