2012-01-26 2 views
0

У меня есть функция контроллера, которая отображает все записи, я использую класс разбиения на страницы, чтобы разделить записи на страницах. Контроллер выглядит примерно так:Codeigniter pagination с поисковым термином в uri

class Example extends CI_Controller { 

    [...] 

    function All() 
    { 
     //Gets all the records 
     //Pagination uri_segment set to 3 
    } 
} 

Теперь я добавил возможность поиска записей. Мне нужно, чтобы поисковый запрос находился в uri, поэтому функция похожа на function All($search_term = false). Моя проблема в том, что функция может иметь или не иметь условия поиска. и в зависимости от этого, сегмент uri разбиения на страницы изменится. без поискового запроса uri_segment равен 3, с ним 4.

Есть ли способ исправить это, используя ту же функцию и имеющий поисковый запрос в URL-адресе?

ответ

0

Это можно сделать различными способами, лично я хотел бы сделать что-то простое, как хранить его в сессии или куки, но вы можете сделать URI, а также ссылаться на форум CI для этого один:
http://codeigniter.com/forums/viewthread/59364/

Хранить в помните, что люди могут вводить строки, не содержащие URI, в ваш поисковый запрос, и вам нужно будет urlencode/decode значения, чтобы помещать их в строку, то, что вам не нужно с куки-файлами или сеансами. Но снова я вижу преимущество для копии &, вставляя ссылку кому-то для результатов поиска.

0

Вы можете использовать параметр get для строки запроса. Например:

search.php

function search() { 
    $q = $this->input->get('q'); 
    $page = $this->uri->segment(3); 
    $results = $this->my_model->search($q, $page); 
    $this->load->view('search_tpl', $results); 
} 

search_tpl.php

echo form_open(current_url(), array('method' => 'get')); 
echo form_input('q'); 
echo form_submit('search', 'Search'); 
echo form_close(); 
0

Вы можете использовать page_query_string в постраничной переменной $ конфиг

$config['page_query_string'] = TRUE; 

После включения этой опции $ _GET будет использоваться для создания ссылки на страницы.

Пример результата: example/all/?per_page=20

-1

Вы просто изменить

$config["uri_segment"] = 3; к $config["uri_segment"] = 4;

, а также изменить base_url как

$config["base_url"] = "site_url('student/index')".$search_key; 

d получить search_key от

$key = $this->uri->segment(3); 
Смежные вопросы