Symfony: как избавиться от безобразных параметров GET - PullRequest
2 голосов
/ 10 октября 2010

Я использую фильтрацию форм для фильтрации данных в веб-интерфейсе.

Проблема в том, что URL уродлив

 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>

Как сделать этот URL лучше?

Спасибо

Ответы [ 3 ]

3 голосов
/ 10 октября 2010

Использование самой платформы / API - хорошая идея, если она поддерживает ваши потребности.В ответ на ваш вопрос вы, вероятно, можете использовать API маршрутизации Symfony для облегчения решения ...

Например, эта глава книги охватывает это:

Как настроить правила маршрутизации для изменения внешнего вида URL

Кроме того, он говорит о длинных строках запросов, которые вы упомянули:

Например, традиционный URL-адрес содержит путь к файлу сценария и некоторые параметры, необходимые для выполнения запроса, как в этом примере:

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

иговорит о связанных проблемах:

Неразборчивость URL-адресов делает их беспокоящими, где бы они ни появлялись, и они ослабляют воздействие окружающего контента

В главе содержится КАК ЭТО РАБОТАЕТ: примеры того, как изменить ваши URL-адреса с использованием конфигурации и программирования.

Вы сможете поддерживать закладки с помощью более простого чтения / менее сложного / болеебезопасные URL.

1 голос
/ 14 октября 2010

иногда, когда я сталкиваюсь с этой проблемой, я запускаю перенаправление с получающей страницы формы на себя, используя метод перенаправления symfony.

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

ИЛИ

используйте метод url_for ()и такие как:

<form action="<?php echo url_for('.../formAction?'.http_build_query($get_vars)); ?>">
...
</form>
0 голосов
/ 10 октября 2010

Если у вас есть опция, вы можете использовать POST, а не GET. Это значительно очистит URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...