Вставьте POST-параметры cakephp в URL - PullRequest
0 голосов
/ 22 сентября 2009

У меня есть эта форма ниже, которая содержит два флажка для сортировки некоторых продуктов:

<form id="FiltreExtraForm" action="" method="post" name="FiltreExtraForm">
    <input id="ProductsDeliveryPrice" type="checkbox" value="1" name="data[Products][delivery_price]"/>
    <input id="ProductsPicture" type="checkbox" value="1" name="data[Products][picture]"/>
</form>

После POST я выполняю фильтрацию, но также хочу добавить полученные параметры в URL E.g: / products / index / delivery_price: 1 / picture: 0. Это возможно. Как я могу это сделать?

Примечание: я не хочу использовать GET для отправки информации о форме.

Ответы [ 3 ]

1 голос
/ 23 сентября 2009

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

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

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

  1. Пользователи не получают "Вы хотите отправить повторно?" диалог, если они обновляются
  2. Получившаяся страница / запрос может быть добавлена ​​в закладки
0 голосов
/ 22 сентября 2009

Если я вас правильно понимаю (и я не уверен, что понимаю), вы можете легко передать дополнительные переменные в строку запроса действия формы. Условно это может выглядеть так:

<form id="FiltreExtraForm" action="/products/index?delivery_price=1&picture=0" method="post" name="FiltreExtraForm">

Используя Cake, вы сможете сделать то же самое без традиционной строки запроса, если хотите (хотя традиционный метод, описанный выше, также будет работать):

<form id="FiltreExtraForm" action="/products/index/delivery_price:1/picture:0" method="post" name="FiltreExtraForm"> 

Я бы порекомендовал посмотреть на помощника по форме или хотя бы создать URI действия с помощью помощников, но это должно дать вам то, что вы ищете.

0 голосов
/ 22 сентября 2009

В действии, которое вы публикуете, вы можете просто подготовить GET url и затем перенаправить на этот URL. Затем действие для этого URL выполняет фильтрацию.

...