2010-10-09 57 views
2

我使用表單過濾來過濾前端中的數據。symfony:如何擺脫醜陋的GET參數

的問題是,該網址是醜陋

http://............./players/game/?st_player_cv_filters[location_id]=1&st_player_cv_filters[plateforme_id]=3&st_player_cv_filters[level_id]=3&st_player_cv_filters[_csrf_token]=023c5c9fb5fc7e7b6ed60d6839c36f67 

(形式呈現:

<?php echo $form->renderFormTag(url_for("game_player", $game), array('method' => 'get')); ?> 
<table><tr><th><label for="location_id"><?php echo __('Country'); ?></label></th><td><?php echo $form['location_id']; ?></td></tr> 

如何呈現的網址,一個更好的辦法,請

感謝

回答

3

如果它支持您的需求,使用框架/ API本身是一個好主意。通過你的問題的聲音,你可能可以使用Symfony routing API,旨在便利的解決方案......

例如,這book chapter覆蓋它:

如何配置路由規則來 外觀變化網址

Futhermore它說你提到的關於長查詢字符串:

對於立場,傳統的URL 包含的文件路徑的腳本和 一些需要完成 請求參數,如下例所示:

http://www.example.com/web/controller/article.php?id=123456&format_code=6532

,並談到相關問題:

URL的不可理解性使得 無論它們出現在哪裏都會令人不安, 並且它們會稀釋 環繞聲ng content

本章提供了使用配置和編程的HOW IT WORKS: examples of how to change your URLs

您應該能夠通過更容易閱讀/更簡單/更安全的URL來保持書籤功能。

0

如果您有選擇,您可以uld使用POST而不是GET。這將顯着清理網址。

+0

耶,但與POST用戶不能書籤過濾器的結果的結果。並與POST我無法通過頁面保持參數(教條傳呼機) – 2010-10-09 23:52:57

1

有時,當我遇到這個問題時,我使用symfony的重定向方法從表單的接收頁面運行重定向到本身。

$this->redirect('.../formAction?'.http_build_query($get_vars)); 

OR

使用url_for()方法和如:

<form action="<?php echo url_for('.../formAction?'.http_build_query($get_vars)); ?>"> 
... 
</form>