将分页添加到codeigniter中

时间:2015-10-25 15:05:25

标签: php codeigniter pagination

我一直在尝试将分页添加到我的代码点火器项目中,尽管代码点火器参考材料表明它很容易"我无法让它发挥作用。我花时间谷歌搜索和看到类似的东西,我做我发现的一切,但仍然没有任何作用。我的一个朋友,也使用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);
    }
}

1 个答案:

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