我一直在尝试将分页添加到我的代码点火器项目中,尽管代码点火器参考材料表明它很容易"我无法让它发挥作用。我花时间谷歌搜索和看到类似的东西,我做我发现的一切,但仍然没有任何作用。我的一个朋友,也使用codeigniter,试图帮助我,但无法让它工作。我认为我很亲密,可能只是忘了一切。无论如何,我正在博客上工作,除了分页之外,一切都适用于博客!我目前在我的索引方法下的控制器中有分页代码:
public function index()
{
$data['blog'] = $this->Blog_model->get_blog();
$data['title'] = 'Blog archive';
//pagination code
$this->load->library('Pagination');
$config['base_url'] = site_url('blog');
$config['total_rows'] = 1;
$config['per_page'] = 1;
$this->pagination->initialize($config);
$data['Pagination'] = $this->pagination->create_links();
//echo $this->pagination->create_links();
//END Pagination
$this->load->view('templates/header', $data);
$this->load->view('blog/index', $data);
$this->load->view('templates/footer');
}
整个控制器看起来像这样:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Blog extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('Blog_model');
$this->load->helper('url_helper');
}
public function index()
{
$data['blog'] = $this->Blog_model->get_blog();
$data['title'] = 'Blog archive';
//pagination code
$this->load->library('Pagination');
$config['base_url'] = site_url('blog');
$config['total_rows'] = 1;
$config['per_page'] = 1;
$this->pagination->initialize($config);
$data['Pagination'] = $this->pagination->create_links();
//echo $this->pagination->create_links();
//END Pagination
$this->load->view('templates/header', $data);
$this->load->view('blog/index', $data);
$this->load->view('templates/footer');
}
public function view($slug = NULL)
{
$data['blog_item'] = $this->Blog_model->get_blog($slug);
if (empty($data['blog_item']))
{
show_404();
}
$data['title'] = $data['blog_item']['title'];
$this->load->view('templates/header', $data);
$this->load->view('blog/view', $data);
$this->load->view('templates/footer');
}
public function create()
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Create a news item';
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('body', 'Body', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('blog/create');
$this->load->view('templates/footer');
}
else
{
$this->Blog_model->set_blog();
redirect('blog');
//$this->index();
//$this->load->view('templates/header');
//$this->load->view('../../blog/index', $data);
//$this->load->view('templates/footer');
}
}
}
关于我的观点,我有这个:
<h1><a href="create">Create A blog Entry</a></h1>
<?php echo $Pagination; ?>
<div class="blog">
<h2><?php echo "Blog"; ?></h2>
<div class="row">
<?php foreach ($blog as $blog_item): ?>
<div class="col-md-6">
<div class='panel panel-primary'>
<div class='panel-heading'>
<?php echo $blog_item['title']; ?>
</div>
<div class="panel-body">
<?php echo $blog_item['body']; ?>
</div>
<div class="panel-footer">
<?php echo $blog_item['entry_date']; ?>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
最后,我的config / autoload.php文件包含:
$autoload['libraries'] = array('database','Pagination');
我的模型上没有任何东西。如果有人想看到完整的代码,它就像我在LAMPCAMP_Project下的github页面,我的名字就是ravenusmc。感谢您对此的任何帮助,祝您有个美好的一天!
我添加了型号代码:
<?php
class Blog_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function get_blog($slug = FALSE)
{
if ($slug === FALSE)
{
$query = $this->db->order_by('entry_date', 'desc')->get('blog');
return $query->result_array();
}
$query = $this->db->get_where('blog', array('slug' => $slug));
return $query->row_array();
}
public function set_blog()
{
$this->load->helper('url');
$slug = url_title($this->input->post('title'), 'dash', TRUE);
$data = array(
'title' => $this->input->post('title'),
'slug' => $slug,
'body' => $this->input->post('body')
);
return $this->db->insert('blog', $data);
}
}
答案 0 :(得分:0)
我会自动加载url helper而不是在模型中加载它。如果您已经自动加载,请从模型中移除$this->load->database();
。
$autoload['helper'] = array('url');
$autoload['libraries'] = array('database','pagination');
其次我建议为总行创建一个计数函数
public function count_total() {
$query = $this->db->get($this->db->dbprefix . 'blog');
return $query->num_rows();
}
对于你的get函数,你需要一个get和limit和offset变量。
public function fetch_blogs($limit, $start, $slug) {
if ($slug == FALSE) {
$this->db->limit($limit, $start);
$this->db->order_by('entry_date', 'desc');
if ($query->num_rows() > 0 {
return $query->result_array();
} else {
return FALSE;
}
}
$this->db->limit($limit, $start);
$query = $this->db->get_where($this->db->dbprefix . 'blog', array('slug' => $slug));
if ($query->num_rows() > 0 {
return $query->result_array();
} else {
return FALSE;
}
}
application/config/routes.php
与您的博客路线我认为您需要在博客中创建我的分页路线。
$route['blog'] = 'blog/index';
$route['blog/(:any)'] = 'blog/index/$1';
博客控制器
首先使用base_url()
site_url()
内容
<?php
class Blog extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('blog_model');
}
public function index() {
$config["base_url"] = base_url('blog');
$config["total_rows"] = $this->blog_model->count_total();
$config["per_page"] = 5; // Change limit to suit what you would like
$config["uri_segment"] = 2;
$this->pagination->initialize($config);
$data['Pagination'] = $this->pagination->create_links();
$start = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;
// Fetch Blogs
$slug = '' // What ever you need slug to be example uri segment()
$data['blog'] = $this->blog_model->fetch_blogs($config["total_rows"], $start, $slug);
$this->load->view('templates/header', $data);
$this->load->view('blog/blog_view', $data); // change index to different view name
$this->load->view('templates/footer');
}
}
以下是CI2和CI3的用户指南链接
CI3:http://www.codeigniter.com/user_guide/libraries/pagination.html
CI2:http://www.codeigniter.com/userguide2/libraries/pagination.html