Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Search/Paginate

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 Wink
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']. Very Happy
_________________
No pain, no gain.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru