2010-05-12 2 views
1

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

ответ

0

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

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

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

http://www.example.com/searchresults

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

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

и страница 3 будет

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

и так далее.

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

+0

да, но как я бы передал поисковый запрос на следующую страницу ??? – sonill

+0

Вы можете использовать скрытое поле – Kenzo

+0

или использовать flashdata – bradfields

3

Вы можете использовать только 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 
} 
0

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

Ваш URL может быть в обозначениях 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/

1

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

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

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

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

Подробнее о URI Class at CodeIgniter.com

Смежные вопросы