# 分页
在开发Web应用程序时,您经常会遇到在页面上打印出有限数量的记录的要求。 然而,分页背后的数学可能是棘手的,这就是为什么你应该使用Nette \ Utils \ Paginator。
我们实例化分页器并设置对象的属性,例如:每页的记录数,当前页的数量和记录的总数(如果已知)。
~~~
$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount(356); // the total number of records (e.g., a number of products)
$paginator->setItemsPerPage(30); // the number of records on page
$paginator->setPage(1); // the number of the current page (numbered from one)
~~~
对象可以传递给模板,之后我们可以提出明确的问题
~~~
if ($paginator->first) ... // is this the first page?
if ($paginator->last) ... // is this the last page?
echo $paginator->page; // current page number
~~~
我们在SQL查询的配方中使用分页器。 方法getLength()和getOffset()返回在LIMIT和OFFSET子句中使用的值。
~~~
$result = $database->table('products')
->limit($paginator->getLength(), $paginator->getOffset());
~~~
如果您需要以相反顺序的页面(即,页面号1对应于最高偏移量),则可以将getOffset()方法替换为getCountdownOffset()。
- Nette简介
- 快速开始
- 入门
- 主页
- 显示文章详细页
- 文章评论
- 创建和编辑帖子
- 权限验证
- 程序员指南
- MVC应用程序和控制器
- URL路由
- Tracy - PHP调试器
- 调试器扩展
- 增强PHP语言
- HTTP请求和响应
- 数据库
- 数据库:ActiveRow
- 数据库和表
- Sessions
- 用户授权和权限
- 配置
- 依赖注入
- 获取依赖关系
- DI容器扩展
- 组件
- 字符串处理
- 数组处理
- HTML元素
- 使用URL
- 表单
- 验证器
- 模板
- AJAX & Snippets
- 发送电子邮件
- 图像操作
- 缓存
- 本土化
- Nette Tester - 单元测试
- 与Travis CI的持续集成
- 分页
- 自动加载
- 文件搜索:Finder
- 原子操作