CodeIgniter分页 - 将页码附加到“page”字符串

时间:2013-12-27 16:40:58

标签: codeigniter pagination

我想要实现的是通过分页输出的网址:

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()能够创建包含第一种或第二种格式链接的项目的分页?

如果您需要更多解释或示例,请与我们联系。我在解释事情方面不太好。 :)

谢谢

2 个答案:

答案 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