Поиск по сайту с помощью CodeIgniter?

Мне нужно сделать простой поиск по сайту с разбивкой на страницы; может ли кто-нибудь сказать мне, как это сделать, не влияя на структуру URL? В настоящее время я использую структуру URL CodeIgniter по умолчанию, и я удалил index.php из нее. Какие-либо предложения?

Вы можете просто использовать URL-адрес, например /search/search_term/page_number .

Установите свой маршрут следующим образом:

 $route['search/:any'] = "search/index"; 

И ваш контроллер:

 function index() { $search_term = $this->uri->rsegment(3); $page = ( ! $this->uri->rsegment(4)) ? 1 : $this->uri->rsegment(4); // some VALIDATION and then do your search } 

Просто обновить этот вопрос. Вероятно, лучше всего использовать следующую функцию:

 $uri = $this->uri->uri_to_assoc() 

и результат затем помещает все в ассоциативный массив следующим образом:

 [array] ( 'name' => 'joe' 'location' => 'UK' 'gender' => 'male' ) 

Узнайте больше о классе URI на CodeIgniter.com

Не совсем понимаю, что вы подразумеваете под воздействием структуры URL. Вы имеете в виду, что вы хотите, чтобы разбиение на страницы происходило без изменения URL-адреса вообще?

Стандартный класс pagination в CI позволит вам настроить разбивку на страницы так, чтобы единственным изменением URL-адреса было число на конце

например, если у вас было 5 результатов на странице, ваши URL-адреса могли бы быть

http://www.example.com/searchresults

а затем страница 2 будет

http://www.example.com/searchresults/5

и стр. 3

http://www.example.com/searchresults/10

и так далее.

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

Код Igniter отключает запросы GET по умолчанию, но вы можете построить альтернативу, если хотите, чтобы URL отображал строку поиска.

Ваш url может быть в нотации http://www.yoursite.com/index.php/class/function/request1:value1/request2:value2

 $request = getRequests(); echo $request['request1']; echo $request['request2']; function getRequests() { //get the default object $CI =& get_instance(); //declare an array of request and add add basic page info $requestArray = array(); $requests = $CI->uri->segment_array(); foreach ($requests as $request) { $pos = strrpos($request, ':'); if($pos >0) { list($key,$value)=explode(':', $request); if(!empty($value) || $value='') $requestArray[$key]=$value; } } return $requestArray ; } 

источник: http://codeigniter.com/wiki/alternative_to_GET/