| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
	
	
	
		 |