我想要实现的是通过分页输出的网址:
http://www.mysite.com/users/page5
或
http://www.mysite.com/users/page-5
目前,它将使用这样的URI段:
http://www.mysite.com/users/page/5
如果使用前两个URL,我可以修改routes.php
配置文件以路由路径。所以,这不是问题。
我遇到的问题是,如何初始化分页设置,以便$this->pagination->create_links()
能够创建包含第一种或第二种格式链接的项目的分页?
如果您需要更多解释或示例,请与我们联系。我在解释事情方面不太好。 :)
谢谢
答案 0 :(得分:0)
要更改分页库的功能,您可以extend库并覆盖create_links()
功能。
在 application / libraries /
中创建名为MY_Pagination.php
的文件
该文件应具有以下结构,因此您可以更改或添加CI的本机分页库的其他功能。 (直接更改 system 目录中的Pagination库是不好的做法。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Pagination extends CI_Pagination {
public function __construct()
{
parent::__construct();
}
}
然后,您需要将create_links()
函数添加到MY_Pagination
类,允许您覆盖其默认功能。下面是您可以更改以实现所需输出的说明(您可能希望通过向函数添加参数来增加灵活性,但这是我能想到的最简单的更改。)
function create_links()
{
// You can copy the exact functionality of this function from:
// system/libraries/Pagination.php
// The line you want to change is:
// $this->base_url = rtrim($this->base_url, '/') .'/';
// Changing to this: $this->base_url = rtrim($this->base_url, '/') .'';
// Will create links in this format: ../page5
// Or changing to this: $this->base_url = rtrim($this->base_url, '/') .'-';
// Will create links in this format: ../page-5
}
答案 1 :(得分:0)
此功能已存在于CodeIgniter 3.0的开发版本中。 You can view the Pagination class as it sits here.
要使用此库,您可以A)使用所有CI 3.0(它非常稳定),或者B)通过创建application/libraries/MY_Pagination.php
并填充它来扩展(或更实际地,替换)Pagination库上面链接的内容。 (完全披露:自从我修改CI以来已经有一段时间了,所以我不知道是否有任何改变,因为这可能导致任何这个答案出错。)
要使用您想要的功能,请指定基本网址减去page-X
段,设置您要在URI段中使用页码而不是偏移量,然后指定前缀。
$config['base_url'] = site_url('users');
$config['use_page_numbers'] = true;
$config['prefix'] = 'page-';
确保包含其他明显的项目,例如per_page
等