poldark 发表于 2015-7-9 16:23:31

求助,分页类里面的$offset是怎么来的?

我是个菜鸟,我一直弄不明白$offset它的执行流程……

是这样的,先是一个文章控制器里面有个index方法:

/**
   * 显示文章列表
   * @return void
   */
    public function index($offset = '')
    {
      $config['base_url'] = site_url('admin/article/index/');
      $config['total_rows'] = $this->article_model->get_article_sum(); //文章总条数
      $config['per_page'] = 2;   //每页显示多少条记录
      $config['uri_segment'] = 4;

      $this->pagination->initialize($config); //这样做后究竟发生了什么事情?

      $data['links'] = $this->pagination->create_links();
      
      $limit = $config['per_page'];
      // $offset = $this->uri->segment(4);
      $data['article_list'] = $this->article_model->get_per_page($limit, $offset);
      
      $this->load->view('list.html', $data);
    }


article_model里的get_per_page方法就是一个limit语句

/**
   * 获取某一页的文章
   * @return array 至少是二维的吧
   */
    public function get_per_page($limit, $offset)
    {
      return $this->db->limit($limit, $offset)->get(self::TABLE)->result_array();
    }


我的问题是 $offset是怎么来的?$config['uri_segment'] 难道它会自动把值付给 $offset,还是说CI检测到$offset为空时会去自动截取uri的最后一段?
分页跑起来貌似也没问题,但我一直都不明白,望大家指点一二啊。

BIgCh 发表于 2015-7-9 16:27:42

数据库获取的呀$this->db->limit($limit, $offset)

aneasystone 发表于 2015-7-9 18:03:44

看你的index函数定义,有一个$offset参数:

public function index($offset = '')


当你访问页面: admin/article/index/1 时,会自动将1赋值给$offset

可以看下CodeIgniter.php中的相关代码:

$params = array_slice($URI->rsegments, 2);
call_user_func_array(array(&$CI, $method), $params);

poldark 发表于 2015-7-9 22:40:49

aneasystone 发表于 2015-7-9 18:03
看你的index函数定义,有一个$offset参数:




好的,谢谢。我去追下……
页: [1]
查看完整版本: 求助,分页类里面的$offset是怎么来的?