开发者

symfony : how to get rid of ugly GET parameters

开发者 https://www.devze.com 2023-01-19 14:29 出处:网络
i\'m using form filtering to filter data in the frontend. The problem is that the URL is ugly http://............./players/game/?st_player_cv_filters[location_id]=1&st_player_cv_filters[platef

i'm using form filtering to filter data in the frontend.

The problem is that the URL is ugly

 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]=023开发者_如何学Cc5c9fb5fc7e7b6ed60d6839c36f67

(form rendered with :

 <?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>

How to render this url in a better way please ?

Thanks


Using the framework/API itself is a good idea if it supports your needs. By the sound of your question, you can likely use the Symfony routing API to faciliate a solution...

For example, this book chapter covers it:

How to configure the routing rules to change the appearance of URLs

Futhermore it speaks about long querystrings that you mentioned:

For instance, a traditional URL contains the file path to a script and some parameters necessary to complete the request, as in this example:

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

and speaks about the associated problems:

The unintelligibility of URLs makes them disturbing wherever they appear, and they dilute the impact of the surrounding content

The chapter provides HOW IT WORKS: examples of how to change your URLs using configuration and programming.

You should be able to maintain bookmarkability through easier to read/less complex/more secure URLs.


sometimes when I run into this problem I run a redirect from the receiving page for the form to itself using symfony's redirect method.

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

OR

use the url_for() method and such as:

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


If you have the option, you could use POST rather than GET. That would clean up the url significantly.

0

精彩评论

暂无评论...
验证码 换一张
取 消