Вопрос

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

http://site.com/controller/action?x=22 иy=36&запрос= привет

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

Спасибо!

Это было полезно?

Решение

Вы могли бы использовать некоторый javascript для кнопки:

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

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

Другие советы

Звучит так, как будто вы хотите сделать Опубликовать / Перенаправить / Получить.

Вот два примера выполнения этого в CakePHP:

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

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

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

echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top