2010-10-09 64 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>