CodeIgniter3搭配Bootstrap3实现分页遇问题,求技术解决方案
我来帮你搞定CodeIgniter 3结合Bootstrap 3的分页功能,你的现有代码还没配置分页相关的核心逻辑,咱们一步步修改:
1. 控制器修改(Beritasekolah.php)
首先要加载分页库,配置分页参数(包括Bootstrap样式适配),然后获取分页数据:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Beritasekolah extends CI_Controller { function __construct(){ parent::__construct(); $this->load->model('m_beritasekolah'); } public function index() { // 加载CI分页库 $this->load->library('pagination'); // 分页核心配置 $config['base_url'] = base_url('beritasekolah/index'); // 分页的基础URL $config['total_rows'] = $this->m_beritasekolah->count_beritasekolah(); // 总记录数(需要模型新增方法) $config['per_page'] = 5; // 每页显示5条数据,可按需调整 $config['uri_segment'] = 3; // URL中分页参数的位置,比如 beritasekolah/index/5 中的5 // 适配Bootstrap 3的分页样式 $config['full_tag_open'] = '<ul class="pagination">'; $config['full_tag_close'] = '</ul>'; $config['first_link'] = '« First'; $config['first_tag_open'] = '<li>'; $config['first_tag_close'] = '</li>'; $config['last_link'] = 'Last »'; $config['last_tag_open'] = '<li>'; $config['last_tag_close'] = '</li>'; $config['next_link'] = '»'; $config['next_tag_open'] = '<li>'; $config['next_tag_close'] = '</li>'; $config['prev_link'] = '«'; $config['prev_tag_open'] = '<li>'; $config['prev_tag_close'] = '</li>'; $config['cur_tag_open'] = '<li class="active"><a href="#">'; $config['cur_tag_close'] = '</a></li>'; $config['num_tag_open'] = '<li>'; $config['num_tag_close'] = '</li>'; // 初始化分页配置 $this->pagination->initialize($config); // 获取当前页码的偏移量 $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; // 获取当前页的数据 $data['beritasekolah'] = $this->m_beritasekolah->list_beritasekolah($config['per_page'], $page); // 把分页链接传给视图 $data['pagination_links'] = $this->pagination->create_links(); $this->template->load('static','beritasekolah',$data); } public function readmore() { $id = $this->uri->segment(3); $data['beritasekolah'] = $this->m_beritasekolah->list_beritasekolah_single($id); $this->template->load('static','readmore1',$data); } }
2. 模型修改(M_beritasekolah.php)
需要新增获取总记录数的方法,同时修改列表查询方法支持分页的limit和offset参数:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class M_beritasekolah extends CI_Model { // 获取总记录数,用于分页计算 public function count_beritasekolah() { return $this->db->count_all('beritasekolah'); } // 修改为支持分页的列表查询 public function list_beritasekolah($per_page, $offset) { $beritasekolah = $this->db->get('beritasekolah', $per_page, $offset); return $beritasekolah; } public function list_beritasekolah_single($id){ $single = $this->db->select('*') ->from('beritasekolah') ->where('id_beritasekolah',$id) ->get(); return $single; } }
3. 视图修改(beritasekolah.php)
更新分页链接的输出,同时顺便修复文章详情的跳转链接(原来的post.html是静态链接,要改成动态的):
<div class="section"> <!-- CONTAINER --> <div class="container"> <!-- ROW --> <div class="row"> <!-- Main Column --> <div class="col-md-12"> <!-- section title --> <div class="section-title"> <h2 class="title">Berita Sekolah</h2> </div> <!-- /section title --> <?php foreach ($beritasekolah->result() as $key) { ?> <!-- ARTICLE --> <article class="article row-article"> <div class="article-img"> <img src="data:image/jpeg;base64,<?php echo base64_encode($key->gambar); ?>" /> </div> <div class="article-body"> <!-- 修复详情链接为动态URL --> <h3 class="article-title"><a href="<?php echo base_url('beritasekolah/readmore/'.$key->id_beritasekolah); ?>"><?php echo $key->judul_berita;?></a></h3> <?php echo $key->isi_berita;?> </div> </article> <!-- /ARTICLE --> <?php }?> <!-- 输出分页链接 --> <?php echo $pagination_links; ?> </div> </div> </div> </div>
关键说明
- 分页的
per_page可以根据你的需求调整每页显示的条数 - Bootstrap 3的样式已经通过控制器的配置参数实现,分页会自动渲染成Bootstrap的分页组件样式
- 确保你的
base_url在config.php里配置正确,否则分页链接会出错
内容的提问来源于stack exchange,提问作者firstama solution
相关产品推荐
相关产品推荐

