RT.
续上面的文章读取功能实现,接下来实现文章列表的分页功能。TP已经实现了一个分页类Page.class.php,3.1版本之前的TP Page类位于ThinkPHP扩展文件夹下,目录地址为ThinkPHP/Library/Org/Util/Page.class.php,引入使用,利用TP的import方法,import('ORG.Util.Page')。但是3.2版本之后的ThinkPHP已经将Page.class.php文件移动到了ThinkPHP/Library/Org/Think/Page.class.php,同样,声明使用Page类的方法也变了,变成$Page = new \Think\Page($count, ‘分页条数’);
OK。接下来学习Page类的使用,以文章Article为例子,Article视图中有数据项id,title,title_alias三个数据项,分别存储的是文章ID,文章标题,文章简介。
1:实例化数据对象
$article = M("Article");
$count = $article->count();//直接读取数据表中条项总数 //或者有查询条件 $count = $article->where(查询条件)->count();//查询满足查询条件的条目数
分页类在初始化的时候传入两个参数,一个是显示条数的总数,一个是每次取出的条数。
$Page = new \Think\Page($count, 10);
如下,filed()指定从数据库中取出id,title,title_alias三个数据项,并且通过limit()函数限制和记录取出的条目,取完后将其赋给页面:
$list = $article->field('id,title,title_alias')->order('id')->limit($Page->firstRow.','.$Page->listRows)->select(); $this->assign('list',$list);
$show = $Page->show(); $this->assign('page',$show);
6:通过$this->display()调用模板显示;(display方法用于模板文件的渲染输出,show方法则用于模板内容渲染输出,关于两者的区别:http://doc.thinkphp.cn/manual/template_output.html)
7:在模板中,通过<volist>标签显示内容
<volist name="list" id="list"> {$list["id"]}{$list["title"]} {$list["title_alias"]} <br/> </volist> {$page}$list数组中存了对应页码中页面所需要展示的内容,其中包括id,title,title_alias。这三个内容。$page变量中存储了换页的数组以及当前的页面数,两者结合就完成了翻页的功能。