2015-10-19 56 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

相關問題