Звучит как проблема подхода. Почему вы используете данные POST для фильтрации ваших данных? Библиотека разбивки на страницы строит строку запроса, чтобы определить смещение результатов запроса вашей базы данных. Почему вы не можете использовать $ _GET вместо $ _POST?
Полагаю, можно было бы настроить конфигурацию пагинации base_url на это:
$this->load->helper('url');
$this->load->library('pagination');
$config['base_url'] = current_url().'?'.http_build_query($_POST);
$config['total_rows'] = 200;
$config['per_page'] = 20;
$this->pagination->initialize($config);
echo $this->pagination->create_links();
А затем в вашем контроллере используйте $ this-> input-> get_post (), а не $ this-> input-> post (). Будьте осторожны - редко можно передать полные данные непосредственно в модель для обработки. Было бы лучше использовать входной класс CI для предотвращения XSS-атак ...
UPDATE:
Чтобы использовать входной класс CI, а не $ _POST или $ _GET напрямую, я обычно храню свои данные формы в «пространстве имен», т.е.
<input type="text" name="search[criteria1]" />
<input type="text" name="search[criteria2]" />
<input type="text" name="search[criteria3]" />
Тогда в вашем контроллере:
...
public function some_resource()
{
$this->load->model('Some_model');
$search_criteria = $this->input->get_post('search');
if ($search_criteria)
{
// make sure here to remove any unsupported criteria
// (or in the model is usually a bit more modular, but
// it depends on how strictly you follow MVC)
$results = $this->Some_model->search($search_criteria);
}
else
{
// If no search criteria were given, return unfiltered results
$results = $this->Some_model->get_all();
}
$this->load->view('some_view', array(
'results' => $results,
'pagination_base' => current_url().'?'.http_build_query($search_criteria)
));
}
...
Поскольку я указал $ this-> input -> get_post (), он сначала проверит параметр строки запроса; если он не существует, он возвращается к публикации данных. Это позволит вам использовать POST в вашей форме, но все же передавать те же данные через строку запроса с классом нумерации страниц. Однако на самом деле форма должна использовать метод GET, так как вы отправляете эти параметры в виде запроса, а не для отправки чего-либо на сервер. Просто мои $ .02 на эту деталь.