symfony:如何摆脱丑陋的GET参数

时间:2010-10-09 23:48:18

标签: forms url symfony1 filtering

我正在使用表单过滤来过滤前端中的数据。

问题是网址很丑陋

 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 个答案:

答案 0 :(得分:3)

如果它支持您的需求,使用框架/ API本身是个好主意。根据您的问题,您可以使用Symfony routing API来提供解决方案......

例如,这个book chapter涵盖了它:

  

如何配置路由规则   更改网址的外观

另外,它提到了你提到的长串联字符串:

  

例如,传统的URL   包含脚本的文件路径和   完成所需的一些参数   请求,如下例所示:

     

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

并谈及相关问题:

  

URL的无法理解   无论他们出现在哪里,他们都会感到不安   他们淡化了影响力   周边内容

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

您应该能够通过更容易阅读/更简单/更安全的网址来维护书签。

答案 1 :(得分: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>

答案 2 :(得分:0)

如果您有选项,则可以使用POST而不是GET。那将大大清理网址。