phalcon使用的分页器是Phalcon\Paginator。

首先先展示一个比较完整的使用例子:

控制器代码:

use Phalcon\Paginator\Adapter\Model as Paginator;
$curPage = 1;
if($this->request->isPost()) {
$curPage = $this->request->getPost('page','int');
} else if($this->request->isGet()) {
$curPage = $this->request->getQuery('page',"int");
} $posts = Posts::find();
if(count($posts) == 0) {
$this->flash->notice("目前尚无任何帖子");
} $paginator = new Paginator(array(
"data" => $posts,
"limit" => 5,
"page" => $curPage
));
$this->view->page = $paginator->getPaginate();

视图代码:

<ul class="pager">
<li class="previous">
</li>
<li class="next">
<?= $this->tag->linkTo('posts/post','发表帖子') ?>
</li>
</ul> <table class="table table-bordered table-striped" align="center">
<thead>
<tr>
<td>标题</td>
<td>发布者</td>
<td>发布时间</td>
<td>评论数量</td>
</tr>
</thead> <tbody>
<?php foreach($page->items as $post) { ?>
<tr>
<td><?= $this->tag->linkTo('posts/detail?pid='.$post->id,$post->title) ?></td>
<td><?= $post->users->username ?></td>
<td><?= date('Y-m-d H:i:s',$post->post_time) ?></td>
<td><?= $post->comment_num ?></td>
</tr>
<?php } ?>
</tbody> <tbody>
<tr>
<td colspan="4" align="right">
<div class="btn-group">
<span class="help-inline">共<?= $page->total_items ?>个帖子</span>
<?= $this->tag->linkTo(array('posts/index',"第一页",'class'=>'icon-fast-backward btn')) ?>
<?= $this->tag->linkTo(array('posts/index?page='.$page->before,"上一页",'class'=>'icon-fast-backward btn')) ?>
<?= $this->tag->linkTo(array('posts/index?page='.$page->next,"下一页",'class'=>'icon-fast-backward btn')) ?>
<?= $this->tag->linkTo(array('posts/index?page='.$page->last,"最后一页",'class'=>'icon-fast-backward btn')) ?>
<span class="help-inline">第<?= $page->current ?>/<?= $page->total_pages ?>页</span>
</div>
</td>
</tr>
</tbody>
</table>

该组件使用了适配器封装不同来源的数据,即“data”参数可以是一个数组,一个模型查询结果集对象,也可以是一个查询生成器,还可以使用自定义适配器。

使用例子:

use Phalcon\Paginator\Adapter\Model as PaginatorModel;

use Phalcon\Paginator\Adapter\NativeArray as PaginatorArray;

use Phalcon\Paginator\Adapter\QueryBuilder as PaginatorQueryBuilder;

// Passing a resultset as data

$paginator = new PaginatorModel(

array(

"data"  => Products::find(),

"limit" => 10,

"page"  => $currentPage

)

);

// Passing an array as data

$paginator = new PaginatorArray(

array(

"data"  => array(

array('id' => 1, 'name' => 'Artichoke'),

array('id' => 2, 'name' => 'Carrots'),

array('id' => 3, 'name' => 'Beet'),

array('id' => 4, 'name' => 'Lettuce'),

array('id' => 5, 'name' => '')

),

"limit" => 2,

"page"  => $currentPage

)

);

// Passing a querybuilder as data

$builder = $this->modelsManager->createBuilder()

->columns('id, name')

->from('Robots')

->orderBy('name');

$paginator = new PaginatorQueryBuilder(

array(

"builder" => $builder,

"limit"   => 20,

"page"    => 1

)

);

页面属性:

items:当前页面的每一项,next:下一页,last:最后一页,current:当前页面,before:上一页,total_pages:总页数,total_items:总项数。

phalcon——Paginator分页的更多相关文章

  1. Bootstrap Paginator分页插件

    Bootstrap Paginator分页插件使用示例 最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页 ...

  2. Bootstrap Paginator分页插件+ajax 实现动态无刷新分页

    之前做分页想过做淘宝的那个,但是因为是后台要求不高,就Bootstrap Paginator插件感觉还蛮容易上手,所以就选了它. Bootstrap Paginator分页插件下载地址: Downlo ...

  3. jq.paginator分页插件稍加修改

    样式一: 样式二: 此分页功能在jq.paginator分页插件上稍加修改. 必加模板html: <div id="jqPaginator"> <div id=& ...

  4. Bootstrap Paginator分页插件+ajax

    Bootstrap Paginator分页插件下载地址: DownloadVisit Project in GitHub  Bootstrap分页插件属性介绍: http://www.cnblogs. ...

  5. Bootstrap Paginator分页插件(mark)

    Bootstrap Paginator分页插件

  6. Bootstrap Paginator 分页插件参数介绍及使用

    Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定制,提供了公共的方法可随时获得插件状态 ...

  7. Bootstrap Paginator分页插件的使用

    今天,我为大家带来的一款做得非常优秀的分页插件BootStrap Paginator,他是一款js插件,由于本人也是才刚刚搞出来的,所以暂时对它也不是特别了解,只能大楖告诉大家怎么使用.我这里使用的是 ...

  8. Bootstrap Paginator分页插件使用示例

    最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页插件呢,或者说是基于jquery支持的分页功能,这样整体 ...

  9. Django 之 Paginator 分页功能

    Django Paginator Django 分页官方文档  https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...

随机推荐

  1. [01] Pattern类和Matcher类

    在Java中,有个java.util.regex包,这是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 它主要有两个类: Pattern   一个正则表达式经编译后的表现模式,可以理解为 ...

  2. SQLite中Cursor类的说明

    在Android 查询数据是通过Cursor 类来实现的.当我们使用 SQLiteDatabase.query()方法时,就会得到Cursor对象, Cursor所指向的就是每一条数据. Cursor ...

  3. OJ周末题

    字符串分割 字符统计 记票统计

  4. Python学习笔记011_模块_标准库_第三方库的安装

    容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序 , 保存每个.py文件 # 创建了一个hello.py的文件,它的内容如下 ...

  5. JPA继承方式

    在JPA中,实体继承关系的映射策略共有三种:单表继承策略(SINGLE_TABLE).Joined策略和Table_PER_Class策略. 1.单表继承策略 单表继承策略,父类实体和子类实体共用一张 ...

  6. Spring4 customEditors

    Spring4.0版本以后customEditors属性为Map<Class<?>, Class<? extends PropertyEditor>>,所以用key ...

  7. PHP多进程编程pcntl_fork解

    其实PHP是支持并发的,只是平时很少使用而已.平时使用最多的应该是使用PHP-FMP调度php进程了吧. 但是,PHP的使用并不局限于做Web,我们完全也可以使用PHP来进行系统工具类的编程,做监控或 ...

  8. GCD之after

    先介绍下C中的modf函数 函数名:modf 头文件:<math.h> 函数原型:double modf(double x, double *ipart) 函数用途:分解x,以得到x的整数 ...

  9. Java 数组扩容

    在添加数据到达数组的上限的时候数组进行扩容: public void resizeArrayCaptcity(){ if(size>=arr.length){ Emp [] arr2=new   ...

  10. java集合系列——Set之HashSet和TreeSet介绍(十)

    一.Set的简介 Set是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) 的元素.对 e1 和 e2,并且最多包含一个为 null 的元素. S ...