Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 29 Апр 2009 17:51:47 Заголовок сообщения: Search/Paginate |
|
|
Может кто-то решал "красиво" эту задачу, и подскажет в каком направлени двигаться?
Дано: есть поисковая форма (input, select.. - всего 6 полей)
Надо: выводит результаты paginate при этом урл должен быть правильным (т.е. вида: /controllers/search/country_id:1/region_id:2/pricemin:200/order:created/direction:asc)
Вроде бы логично делать форму type => get?
Но как при этом сохранить выбор для формы? Т.е. чтобы при перезагрузке страницы - в форме были отображены выбранные ранее country_id, region_id, pricemin order...?
Чтобы сохранить форму, надо делать type => post методом.
У меня пока два варианта решения:
1. Методом post через "промежуточную" makeniceurl - которая будет брать $this->data и преобразовывать в красивый урл, возвращая его -> search-у (но тут я, почему-то теряю само $this->data
2. Методом get - и потом "восстанавливать" данные для формы, чтобы там отображались выбранные ранее пункты меню, заполненные поля.
Оба метода не очень красивы и изящны, на мой взгляд. Как лучше? |
|
Вернуться к началу |
|
|
Armin Гость цитировать
|
Добавлено: 10 Сен 2009 00:38:17 Заголовок сообщения: |
|
|
Мне тоже такое нужно, уже несколько суток в напрасных поисках... |
|
Вернуться к началу |
|
|
mayar
цитировать
Зарегистрирован: 03 Апр 2009 15:52:14 Сообщения: 24
|
Добавлено: 11 Сен 2009 15:29:14 Заголовок сообщения: |
|
|
Вроде бы работает и для пост и для гет:
index.ctp
Код: | <?php $paginator->options(array('url' => $this->passedArgs));?> |
|
|
Вернуться к началу |
|
|
Armin Гость цитировать
|
Добавлено: 12 Сен 2009 06:23:04 Заголовок сообщения: |
|
|
А что нужно сделать если у меня гет форма генерит такой урл
index?keywords=a&city=1&country=1, а мне надо
index/keywords:a/city:1/country:1/ |
|
Вернуться к началу |
|
|
Armin Гость цитировать
|
Добавлено: 12 Сен 2009 08:04:51 Заголовок сообщения: |
|
|
Armin писал(а): |
index?keywords=a&city=1&country=1, а мне надо
index/keywords:a/city:1/country:1/ |
Тупо добавил такую функцию, только форма уже пост.
Код: | function search() {
$url['action'] = 'index';
$url['city'] = $this->params['form']['city_id'];
$url['country'] = $this->params['form']['country_id'];
if (isset( $this->params['form']['keywords'] )){
$url['keywords'] = $this->params['form']['keywords'];
};
$this->redirect($url, null, true);
} |
url теперь выглядит как index/city:3/country:5/keywords:aa , нормальное решение ? |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 12 Сен 2009 12:06:33 Заголовок сообщения: |
|
|
Ну у меня делается через промежуточную функцию, которая из формы делает красивый кейковский урл. |
|
Вернуться к началу |
|
|
mayar
цитировать
Зарегистрирован: 03 Апр 2009 15:52:14 Сообщения: 24
|
Добавлено: 15 Сен 2009 10:20:36 Заголовок сообщения: |
|
|
А в чем смысл красивого URL ? |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 15 Сен 2009 10:44:10 Заголовок сообщения: |
|
|
ну например педжинацию пилить не надо, особенно если она "с подвывертом" |
|
Вернуться к началу |
|
|
Serginho
цитировать
Зарегистрирован: 27 Ноя 2009 17:19:14 Сообщения: 26
|
Добавлено: 29 Ноя 2009 16:22:10 Заголовок сообщения: |
|
|
Armin писал(а): | Armin писал(а): |
index?keywords=a&city=1&country=1, а мне надо
index/keywords:a/city:1/country:1/ |
Тупо добавил такую функцию, только форма уже пост.
Код: | function search() {
$url['action'] = 'index';
$url['city'] = $this->params['form']['city_id'];
$url['country'] = $this->params['form']['country_id'];
if (isset( $this->params['form']['keywords'] )){
$url['keywords'] = $this->params['form']['keywords'];
};
$this->redirect($url, null, true);
} |
url теперь выглядит как index/city:3/country:5/keywords:aa , нормальное решение ? |
А подскажите, пожалуйста, каким способом теперь получить city, country, keywords в методе index?
Заранее спасибо, cake только осваиваю. _________________ No pain, no gain. |
|
Вернуться к началу |
|
|
Serginho
цитировать
Зарегистрирован: 27 Ноя 2009 17:19:14 Сообщения: 26
|
Добавлено: 29 Ноя 2009 16:28:18 Заголовок сообщения: |
|
|
Пока писал, уже собственно и решение нашёл. Через ['named']. _________________ No pain, no gain. |
|
Вернуться к началу |
|
|
|