htouch 发表于 2009-11-12 17:41:27

CI的分页类,只能用在控制器中吗?

本帖最后由 htouch 于 2009-11-12 23:40 编辑

如题。
是否可以用在模型中呢?因为我的数据库查询、输出,都是在模型中做的。。

Hex 发表于 2009-11-12 18:19:28

分页属于页面逻辑,不应该放到模型层吧?

htouch 发表于 2009-11-12 18:40:07

恩。。
我的CRUD是仿照《PHP 敏捷开发框架 CodeIgniter》这本书中的例子做的,
作者将库查询及结果页内容组织都放在Model里了。。

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

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

{:3_49:}

Hex 发表于 2009-11-12 21:48:34

分页类在模型中没有道理用不了,普通的类库在哪里都能用。

htouch 发表于 2009-11-12 23:31:52

本帖最后由 htouch 于 2009-11-12 23:38 编辑

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

贴出自己的实现代码,以示歉意:

//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();
}

visvoy 发表于 2009-11-13 07:38:01

用get_instance()获得controller对象

htouch 发表于 2009-11-13 09:49:09

感谢楼上,您要不说,我真想不到。
页: [1]
查看完整版本: CI的分页类,只能用在控制器中吗?