求助: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
相关产品推荐
相关产品推荐

