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. XML解析【介绍、DOM、SAX详细说明、jaxp、dom4j、XPATH】

    什么是XML解析 前面XML章节已经说了,XML被设计为"什么都不做",XML只用于组织.存储数据,除此之外的数据生成.读取.传送等等的操作都与XML本身无关! XML解析就是读取 ...

  2. 02函数-05-generator(ES6)

    generator(生成器)是ES6标准引入的新的数据类型. generator看上去像一个函数,但可以返回多次,除了return语句,还可以用yield返回多次.定义方式如下: function* ...

  3. Spring-Hibernate-web的延迟加载方案

    1,现象与问题 /** * 由于Hibernate存在延迟加载问题,当Dao事务提交之后,session就关闭: * 此时如果到显示层就没有办法获取对象,使用openSessionInViewer是解 ...

  4. RG_4

    集训前半段马上就要结束了. 很多作业等待着我. 真希望作业君不喜欢我.

  5. Es6 Promise 用法详解

     Promise是什么??    打印出来看看  console.dir(Promise) 这么一看就明白了,Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方 ...

  6. AngularJS概念概述和第一个使用例子

    点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 概念概述 本节使用一个简单的例子简要介绍了AngularJS的重要组成部分. 概念 描述 ...

  7. [js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)

    接着上文[js高手之路] html5 canvas系列教程 - 状态详解(save与restore),相信大家都应该玩过美颜功能,而我们今天要讲的就是canvas强大的像素处理能力,通过像素处理,实现 ...

  8. 用 Python 撸一个区块链

    本文翻译自 Daniel van Flymen 的文章 Learn Blockchains by Building One 略有删改.原文地址:https://hackernoon.com/learn ...

  9. hdu3974 找上属的模拟

    There is a company that has N employees(numbered from 1 to N),every employee in the company has a im ...

  10. 浅谈PHP7的新特性

    我以前用过的php的最高版本是php5.6.在换新工作之后,公司使用的是PHP7.据说PHP7的性能比之前提高很多.下面整理下php7的新特性.力求简单了解.不做深入研究. 1.变量类型声明 函数的参 ...