phalcon——Paginator分页
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分页的更多相关文章
- Bootstrap Paginator分页插件
Bootstrap Paginator分页插件使用示例 最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页 ...
- Bootstrap Paginator分页插件+ajax 实现动态无刷新分页
之前做分页想过做淘宝的那个,但是因为是后台要求不高,就Bootstrap Paginator插件感觉还蛮容易上手,所以就选了它. Bootstrap Paginator分页插件下载地址: Downlo ...
- jq.paginator分页插件稍加修改
样式一: 样式二: 此分页功能在jq.paginator分页插件上稍加修改. 必加模板html: <div id="jqPaginator"> <div id=& ...
- Bootstrap Paginator分页插件+ajax
Bootstrap Paginator分页插件下载地址: DownloadVisit Project in GitHub Bootstrap分页插件属性介绍: http://www.cnblogs. ...
- Bootstrap Paginator分页插件(mark)
Bootstrap Paginator分页插件
- Bootstrap Paginator 分页插件参数介绍及使用
Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定制,提供了公共的方法可随时获得插件状态 ...
- Bootstrap Paginator分页插件的使用
今天,我为大家带来的一款做得非常优秀的分页插件BootStrap Paginator,他是一款js插件,由于本人也是才刚刚搞出来的,所以暂时对它也不是特别了解,只能大楖告诉大家怎么使用.我这里使用的是 ...
- Bootstrap Paginator分页插件使用示例
最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页插件呢,或者说是基于jquery支持的分页功能,这样整体 ...
- Django 之 Paginator 分页功能
Django Paginator Django 分页官方文档 https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...
随机推荐
- eclipse版本选择
Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会. Ec ...
- Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
6.1.平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)--运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名.可以指定单独节 ...
- lincode.41 最大子数组
最大子数组 描述 笔记 数据 评测 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 注意事项 子数组最少包含一个数 您在真实的面试中是否遇到过这个题? Yes 哪家公司问你的这个题? ...
- JPA关系映射之one-to-one
一对一关联有两种实现方式:一种是共享的主键关联,另一种是一对一的外键关联 1.共享的主键关联:让两个对象具有共同的主键值,以表明他们之间的一一对应关系. Person.java类 public cla ...
- 如何使用Flexbox和CSS Grid,实现高效布局
CSS 浮动属性一直是网站上排列元素的主要方法之一,但是当实现复杂布局时,这种方法不总是那么理想.幸运的是,在现代网页设计时代,使用 Flexbox 和 CSS Grid 来对齐元素,变得相对容易起来 ...
- String,StringBuffer,StringBuilder的区别及其源码分析
String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而 ...
- Server in ASP.NET-Core
.NET-Core Series Server in ASP.NET-Core DI in ASP.NET-Core Routing in ASP.NET-Core Error Handling in ...
- OC——多态
书接上文,上文提到继承一个很大用途的是为了更好的实现多态,现在我们就来看看OC的多态. 多态:顾名思义就是好多种状态,以前学C#时候印象最深刻的例子是好多个类共同实现同一个接口,然后把这些类的对象都装 ...
- 简单实用的CSS网页布局中文排版技巧
由于汉字的特殊性,在css网页布局中,中文排版有别于英文排版.排版是一个麻烦的问题,小编认为,作为一个优秀的网页设计师和网页制作人员,掌握一些简单的中文排版技巧是不可或缺的,所以今天特意总结了几个简单 ...
- React获得真实的DOM操作
真实的DOM操作 ------------------------------------------------------------------------------------------- ...