Codeigniter使用查询字符串分页

时间:2015-01-21 22:27:08

标签: php codeigniter pagination codeigniter-2

我正在尝试使用查询字符串实现Codeigniter分页,但是遇到了一些问题。我已经开启了

$config['page_query_string'] = TRUE;

因此,要使用查询字符串进行分页,但据我所知,当您使用查询字符串进行控制器和方法路由时,这确实有用。但是在我的情况下,我仍然使用URI段进行路由,但只是想使用查询字符串进行分页,过滤结果,搜索等。当我尝试使用http_build_query()重建url时,通过它发送的查询字符串会导致per_page (我已重命名为偏移)在第一页之后的任何分页链接上写两次。原因是,当我重新创建查询字符串偏移时,后续页面上的$ _GET已经存在,CI也会附加它,导致它出现两次。在下面的代码中,我从$ _GET中删除了原始的per_page查询字符串,因此可以在没有它的情况下重建查询字符串,CI将在分页create_links()期间添加它。我想检查一下这是否有意义,或者是否有更简洁的方法来解决这个问题。

// load pagination library
$this->load->library('pagination');

// set pagination base url
$config['base_url'] = base_url('accounting/bank/reconcile-account1/account/' . $bank_account_id) . '/?';

// assign current $_GET parameters to local variable as we need to remove offset each time we rebuild query
// string otherwise it gets appended twice to url
$get = $_GET;

// unset the offset array item
unset($get['offset']);

// build first url link
$config['first_url'] = base_url('accounting/bank/reconcile-account1/account/' . $bank_account_id) . '/?' . http_build_query($get);

// if $get contains items then build these back onto the url
if (count($get) > 0) $config['suffix'] = '&' . http_build_query($get);

// set the total number of rows
$config['total_rows'] = $result['total_num_txns'];

// set the number of items per page
$config['per_page'] = $filter->limit;

// initialise the pagination config
$this->pagination->initialize($config);

1 个答案:

答案 0 :(得分:2)

使用分页库的CodeIgniter 3.0版本。它有一个配置选项来重用查询字符串。

我自己在CodeIgniter 2中实现了它,但是我没有替换分布式版本,而是将其部署为一个名为MY_Pagination的重载库,并将其放在我的应用程序/库中。夹。我必须做的唯一代码更改就是将访问修饰符设置为public而不是protected。