使用查询字符串的 Codeigniter 分页

Codeigniter pagination using query strings

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

$config['page_query_string'] = TRUE;

所以使用查询字符串进行分页,但据我所知,这确实适用于将查询字符串用于控制器和方法路由。然而,在我的例子中,我仍然使用 URI 段进行路由,但只想使用查询字符串进行分页、过滤结果、搜索等。当我尝试使用 http_build_query() 来重建 url 时通过它发送的查询字符串会导致 per_page(我已将其重命名为偏移量)在第一页之后的任何分页 link 上写入两次。原因是当我重新创建查询字符串时,偏移量已经在后续页面的 $_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);

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

我自己在 CodeIgniter 2 中实现了它,但我没有替换分布式版本,而是将它部署为一个名为 MY_Pagination 的重载库,并将其放在我的 'application/libraries' 文件夹中。要以这种方式完成这项工作,我必须做的唯一代码更改是将访问修饰符设置为 public 而不是 protected。