关于函数索引的Codeigniter分页

时间:2012-09-03 02:26:01

标签: php codeigniter pagination

我在弄清楚了一些事情之后编辑了这个,但如果我想要索引上的链接,这是一个好方法吗?没有函数页面,如果base_url是test / index,它将无法正常工作,但test / test将起作用。

控制器

class Test扩展了CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->model('Test_model');
    $this->load->library('pagination');
}

public function index()
{
    $page['title']  = '';
    $page['file']   = 'test/index';

    $config['base_url'] = base_url().'test/page';
    $config['total_rows'] = $this->Test_model->record_count();
    $config['per_page'] = 2;
    $config['num_links'] = 5;

    $offset = $this->uri->segment(3,0);

    $this->pagination->initialize($config);

    $page['data']['items'] = $this->Test_model->getItems($config['per_page'], $offset);
    $page['data']['pagination'] = $this->pagination->create_links();
    $this->load->view('template', $page);
}

public function page()
{
    $page['title']  = '';
    $page['file']   = 'test/index';

    $config['base_url'] = base_url().'test/page';
    $config['total_rows'] = $this->Test_model->record_count();
    $config['per_page'] = 2;
    $config['num_links'] = 5;

    $offset = $this->uri->segment(3,0); 

    $this->pagination->initialize($config);

    $page['data']['items'] = $this->Test_model->getItems($config['per_page'], $offset);
    $page['data']['pagination'] = $this->pagination->create_links();
    $this->load->view('template', $page);
}

}

模型

public function record_count()
{
    return $this->db->count_all('item');
}

public function getItems($limit, $offset)
{
    $query = $this->db->get('item', $limit, $offset);
    $result = $query->result();
    return $result;
}

视图

<h2><?=$pagination; ?></h2>
<table>
<?php foreach($items as $item) { ?>

<tr><td><?=$item->name?></td></tr>

<?php } ?>

2 个答案:

答案 0 :(得分:2)

试试这个:

function  __construct()
    {

        parent::__construct();
        $this->load->helper('array');
        $this->load->helper('url');
        $this->load->library('pagination');
        $this->load->model('Test_model','',TRUE);
    }

function index($uri_segment="3")
{   
        $config['base_url'] = base_url('test/index');
        $config['total_rows'] = $this->Test_model->record_count();
        $config['per_page'] = 5;
        $config['uri_segment'] = 3;
        $this->pagination->initialize($config);

$page['data']['products'] = $this->Test_model->getItems($config['per_page'],$this->uri->segment(3));

    $page['data']['pagination']= $this->pagination->create_links();
    $page['title']  = '';
    $page['file']   = 'test/index';

    $this->load->view('template', $page);
}

如果生成的列表在点击下一页时显示随机页面,则应该采用下一页编号而不是下一编号(+5)。在这种情况下,添加

   $config['use_page_numbers'] = TRUE;

在初始化分页配置之前。

答案 1 :(得分:1)

在控制器中,您必须更新此

public function index()
    {

        $this->load->library('pagination');

        $config['base_url'] = base_url().'test/index'; // use test/test and it works
        $config['total_rows'] = $this->Test_model->record_count();
        $config['per_page'] = 5;
        $config['num_links'] = 10;
        $config['uri_segment'] = 3;  

        $offset = $this->uri->segment(3,0);

        $this->pagination->initialize($config);

        $page['data']['products'] = $this->Test_model->getItems($config['per_page'], $offset);
        $page['data']['pagination'] = $this->pagination->create_links();

        $page['title']  = '';
        $page['file']   = 'test/index';

        $this->load->view('template', $page);
    }

这里是您的有用链接 Codeigniter pagination