CakePHP: Запретить получение полей формы в URL - PullRequest
3 голосов
/ 23 декабря 2009

У меня есть поисковая форма CakePHP, которая имеет 'type'=>'get'. По сути, один из элементов формы - кнопка отправки изображения типа. Когда форма публикуется, в URL я всегда получаю следующие x & y координаты кнопки отправки изображения:

http://site.com/controller/action?x=22&y=36&query=hello

Можно ли как-то предотвратить отображение координат в URL? Причина в том, что кто-то другой может использовать тот же URL-адрес для выполнения того же поиска, без этого не интуитивного материала в ссылке.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 23 декабря 2009

Вы можете использовать некоторый JavaScript на кнопке:

document.getElementById('myImageButton').onclick = function() {
    this.form.submit();
    return false;
};

В качестве альтернативы, в вашем контроллере в функции beforeFilter вы можете проверить наличие нежелательных переменных, удалить их и перенаправить на красивый URL. Это означает, что будет сделано 2 HTTP-запроса.

1 голос
/ 24 декабря 2009

Звучит так, как будто вы хотите сделать Post / Redirect / Get .

Вот два примера этого в CakePHP:

Преимущества перенаправления POST на GET запрос:

  1. Пользователи не получают "Вы хотите отправить повторно?" диалог, если они обновляются
  2. Получившаяся страница / запрос может быть добавлена ​​в закладки
  3. Вы можете использовать встроенную в CakePHP маршрутизацию SEF, поэтому вместо URL с /search?q=contact вы можете получить /search/contact
0 голосов
/ 16 июня 2015

Вместо использования вспомогательной функции submit используйте функцию button и установите тип кнопки для отправки.

echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));
...