You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:CodeIgniter 4实现分页友好URI,替换page?=2为pagina/2

CodeIgniter 实现分段式友好分页URL(pagina/2 替代 page?=2)

以下是完整可运行的演示案例,适配CodeIgniter 3.x版本:

1. 配置路由规则

打开application/config/routes.php,添加路由映射,让分页URL指向默认控制器的方法:

// 假设默认控制器为Welcome,index方法处理分页逻辑
$route['pagina/(:num)'] = 'welcome/index/$1';
// 首页默认指向第一页
$route['default_controller'] = 'welcome';

2. 控制器实现分页逻辑

在application/controllers/Welcome.php中编写分页核心代码:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function index($page = 1) {
        // 加载依赖类库与模型
        $this->load->library('pagination');
        $this->load->model('Product_model');

        // 分页核心配置
        $config['base_url'] = base_url('pagina');
        $config['total_rows'] = $this->Product_model->get_total_count();
        $config['per_page'] = 10; // 每页展示10条商品
        $config['uri_segment'] = 2; // 页码位于URL的第2个分段(pagina/2 中的2)
        $config['use_page_numbers'] = TRUE; // 使用页码而非偏移量
        $config['num_links'] = 5; // 显示前后5个页码链接

        // 可选:自定义分页样式(适配Bootstrap)
        $config['full_tag_open'] = '<nav><ul class="pagination">';
        $config['full_tag_close'] = '</ul></nav>';
        $config['cur_tag_open'] = '<li class="page-item active"><a class="page-link" href="#">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li class="page-item">';
        $config['num_tag_close'] = '</li>';
        $config['attributes'] = ['class' => 'page-link'];
        $config['first_link'] = '首页';
        $config['last_link'] = '末页';
        $config['next_link'] = '下一页';
        $config['prev_link'] = '上一页';

        // 初始化分页类
        $this->pagination->initialize($config);

        // 计算偏移量,查询当前页商品数据
        $offset = ($page - 1) * $config['per_page'];
        $data['products'] = $this->Product_model->get_paginated_products($config['per_page'], $offset);
        $data['pagination_links'] = $this->pagination->create_links();

        // 加载首页视图
        $this->load->view('home', $data);
    }
}

3. 商品模型示例

创建application/models/Product_model.php,实现数据查询方法:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Product_model extends CI_Model {

    // 获取商品总数量
    public function get_total_count() {
        return $this->db->count_all('products'); // 假设商品表名为products
    }

    // 分页获取商品数据
    public function get_paginated_products($limit, $offset) {
        $query = $this->db->get('products', $limit, $offset);
        return $query->result();
    }
}

4. 视图展示数据与分页

创建application/views/home.php,渲染商品列表和分页链接:

<div class="container">
    <h2>商品列表</h2>
    <div class="row">
        <?php foreach($products as $product): ?>
            <div class="col-md-3 mb-4">
                <div class="card">
                    <div class="card-body">
                        <h5 class="card-title"><?php echo $product->name; ?></h5>
                        <p class="card-text">¥<?php echo $product->price; ?></p>
                    </div>
                </div>
            </div>
        <?php endforeach; ?>
    </div>

    <!-- 显示分页链接 -->
    <?php echo $pagination_links; ?>
</div>

关键注意事项

  • 确保application/config/config.php中base_url已正确配置,例如:$config['base_url'] = 'https://你的域名/';
  • 如果默认控制器不是Welcome,需同步修改路由和控制器文件名、类名
  • uri_segment的数值要和URL分段对应:pagina/2中,pagina是第1段,2是第2段,所以设置为2

内容的提问来源于stack exchange,提问作者Chill Souds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:52:47