用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3835|回复: 6
收起左侧

[已解决] CI的分页类,只能用在控制器中吗?

[复制链接]
发表于 2009-11-12 17:41:27 | 显示全部楼层 |阅读模式
本帖最后由 htouch 于 2009-11-12 23:40 编辑

如题。
是否可以用在模型中呢?因为我的数据库查询、输出,都是在模型中做的。。
发表于 2009-11-12 18:19:28 | 显示全部楼层
分页属于页面逻辑,不应该放到模型层吧?
 楼主| 发表于 2009-11-12 18:40:07 | 显示全部楼层
恩。。
我的CRUD是仿照《PHP 敏捷开发框架 CodeIgniter》这本书中的例子做的,
作者将库查询及结果页内容组织都放在Model里了。。

他的思路是不同的库表对应不同的(十分简单的)控制器,而都共用一个CRUD模型。

如此说来,我莫不是没法用CI的分页类了?

发表于 2009-11-12 21:48:34 | 显示全部楼层
分页类在模型中没有道理用不了,普通的类库在哪里都能用。
 楼主| 发表于 2009-11-12 23:31:52 | 显示全部楼层
本帖最后由 htouch 于 2009-11-12 23:38 编辑

抱歉,自己没有试就来问,是可以在Model中用的,试过了。

贴出自己的实现代码,以示歉意:
PHP复制代码
 
//CI的分页类,传递的参数是偏移量,
//也就是从库中的第几条记录开始显示,
//而不是某些分页方法中所传递的页码
function show_all($offset)
{
  //载入'分页类'
  $this->load->library('pagination');
  $this->load->helper('form');
  $this->load->helper('url');
  //根据组合条件,计算记录总数,(当前组合条件为空)
  $config['total_rows'] = $this->db->count_all_results('mytable');
  //设置本页路径
  $config['base_url'] = "本页路径";
  //设置每页显示记录数
  $config['per_page'] = '15';
  //设置分页导航条样式
  $config['full_tag_open']   = '<div id = "page_nav">';
  $config['full_tag_close']  = '</div>';
  $config['first_link']      = '首页';
  $config['last_link']       = '末页';
  $config['next_link']       = '下一页>';
  $config['prev_link']       = '<上一页';
  //应用设置
  $this->pagination->initialize($config);
  //设置查询条件
  $this->db->select('你的字段列表');
  //排序顺序
  $this->db->order_by("id", "desc");
  //limit(结果数,偏移量)
  $this->db->limit($config['per_page'],$offset);
  //查询
  $query = $this->db->get('mytable');
  //显示结果列表
  foreach ($query->result_array() as $row){
    $this->table->add_row($row);
  }
  echo $this->table->generate();
  //添加分页导航条
  echo $this->pagination->create_links();
}
 
复制代码

评分

参与人数 1威望 +2 收起 理由
Hex + 2 精神可嘉

查看全部评分

发表于 2009-11-13 07:38:01 | 显示全部楼层
用get_instance()获得controller对象
 楼主| 发表于 2009-11-13 09:49:09 | 显示全部楼层
感谢楼上,您要不说,我真想不到。

本版积分规则