Мне нужно сделать простой поиск по сайту с разбивкой на страницы; может ли кто-нибудь сказать мне, как это сделать, не влияя на структуру 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 ; }