Skip to content

Commit 3765b19

Browse files
committed
update pagination.md
1 parent fad35f2 commit 3765b19

File tree

1 file changed

+40
-36
lines changed

1 file changed

+40
-36
lines changed

pagination.md

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,28 @@
22

33
- [简介](#introduction)
44
- [基本用法](#basic-usage)
5-
- [对查询语句构造器进行分页](#paginating-query-builder-results)
6-
- [Eloquent 模型进行分页](#paginating-eloquent-results)
5+
- [查询构造器分页](#paginating-query-builder-results)
6+
- [Eloquent 分页](#paginating-eloquent-results)
77
- [手动创建分页](#manually-creating-a-paginator)
88
- [显示分页结果](#displaying-pagination-results)
9-
- [将结果转换为JSON](#converting-results-to-json)
9+
- [将结果转换为 JSON](#converting-results-to-json)
1010
- [自定义分页视图](#customizing-the-pagination-view)
1111
- [分页器实例方法](#paginator-instance-methods)
1212

1313
<a name="introduction"></a>
1414
## 简介
1515

16-
在其他的框架中,分页往往是令人十分头疼的。 Laravel 的分页器与 [查询语句构造器](/docs/{{version}}/queries)[Eloquent ORM](/docs/{{version}}/eloquent) 集成在一起,为数据库结果集提供了便捷的、开箱即用的分页器。分页器生产的 HTML 兼容 Bootstrap CSS framework.
16+
在大多数的框架中,分页无不令人十分头疼。 Laravel 的分页器与[查询构造器](/docs/{{version}}/queries)[Eloquent ORM](/docs/{{version}}/eloquent) 集成在一起,并提供方便易用的数据结果集分页。分页器生成的 HTML Bootstrap CSS 框架兼容。
1717

1818
<a name="basic-usage"></a>
1919
## 基本用法
2020

2121
<a name="paginating-query-builder-results"></a>
22-
### 对查询语句构造器进行分页
22+
### 查询构造器分页
2323

24-
有几种方法可以对项目进行分页。最简单的是在 [查询语句构造器](/docs/{{version}}/queries)[Eloquent 查询](/docs/{{version}}/eloquent) 中使用 `paginate` 方法。 `paginate` 方法会自动基于用户当前所查看的页面来设置适当的限制和偏移。默认情况下,当前页面通过 HTTP 请求所带的 `page` 字符串参数的值来检测。当然,这个值会被 Laravel 自动检测,并且自动插入到由分页器产生的链接中
24+
有几种方法可以对数据进行分页。最简单的是在 [查询语句构造器](/docs/{{version}}/queries)[Eloquent 查询](/docs/{{version}}/eloquent) 中使用 `paginate` 方法。 `paginate` 方法会自动根据用户正在查看的页面来设置限制和偏移量。默认情况下,当前页面通过 HTTP 请求所带的参数 `page` 的值来检测。这个值是被 Laravel 自动检测到的,也会自动插入到由分页器生产的链接中
2525

26-
在下面这个例子中,传递给 `paginate` 方法的唯一参数是你希望在「每页」显示的项目条数。在这种情况下,就让我们将显示的数据条数指定为 `15` 条每页
26+
在下面这个例子中,传递给 `paginate` 方法的唯一参数是「每页」显示的项目数量。下面是每页显示 `15` 条数据的例子
2727

2828
<?php
2929

@@ -47,44 +47,44 @@
4747
}
4848
}
4949

50-
> {note} 目前,Laravel无法有效执行使用 `groupBy` 语句的分页操作。如果你需要在一个分页结果集中使用 `groupBy`,建议你查询数据库并手动创建分页器。
50+
> {note} 目前,Laravel 无法高效执行使用 `groupBy` 语句的分页操作。如果你需要在分页结果集中使用 `groupBy`,建议你查询数据库并手动创建分页器。
5151
52-
#### "简单分页"
52+
#### 简单分页
5353

54-
如果你只需要在你的分页视图中显示简单的「上一页」和「下一页」的链接,你可以使用 `simplePaginate` 方法来执行更高效的查询。这在你操作大型数据集、渲染视图时不需要显示页码链接的时候非常有用
54+
如果你只需要在分页视图中显示简单的「下一页」和「上一页」的链接,即不需要显示每个页码的链接,更推荐使用 `simplePaginate` 方法来执行更高效的查询:
5555

5656
$users = DB::table('users')->simplePaginate(15);
5757

5858
<a name="paginating-eloquent-results"></a>
59-
### Eloquent 模型进行分页
59+
### Eloquent 模型分页
6060

61-
你也可以对 [Eloquent](/docs/{{version}}/eloquent) 查询进行分页。在这个例子中,我们将对 `User` 模型进行分页并且每页显示 `15` 条数据。正如你看到的,语法几乎与基于查询语句构造器分页时的完全相同
61+
你也可以对 [Eloquent](/docs/{{version}}/eloquent) 查询进行分页。下面的例子中对 `User` 模型进行了分页并且每页显示 `15` 条数据。正如你看到的,所使用的语法几乎与基于查询语句构造器分页时的完全相同
6262

6363
$users = App\User::paginate(15);
6464

65-
当然,你可以在对查询设置了其他约束条件之后调用 `paginate` 方法,例如 `where` 子句
65+
当然,你可以在设置了查询的其他约束条件之后调用 `paginate` 方法,例如 `where` 语句
6666

6767
$users = User::where('votes', '>', 100)->paginate(15);
6868

69-
你也可以在对 `Eloquent` 模型进行分页使用 `simplePaginate` 方法
69+
你也可以在 `Eloquent` 模型中使用 `simplePaginate` 方法进行分页
7070

7171
$users = User::where('votes', '>', 100)->simplePaginate(15);
7272

7373
<a name="manually-creating-a-paginator"></a>
7474
### 手动创建分页
7575

76-
有些时候你可能希望手动创建一个分页实例,将其传递为一个项目数组。你可以依据你的需求创建 `Illuminate\Pagination\Paginator` `Illuminate\Pagination\LengthAwarePaginator` 实例
76+
如果你想手动创建分页实例并且最终得到一个数组类型的结果,可以根据需求来创建 `Illuminate\Pagination\Paginator` 或者 `Illuminate\Pagination\LengthAwarePaginator` 实例来实现
7777

78-
`Paginator` 类不需要知道结果集中的数据项总数;然而,正因如此,该类没有用于检索最后一页索引的方法。`LengthAwarePaginator` 接收的参数几乎和 `Paginator` 一样;但是,它需要计算结果集中的数据项总数
78+
`Paginator` 类不需要知道结果集中的数据量,因此该类没有检索最后一页索引的方法。而 `LengthAwarePaginator` 接收的参数几乎和 `Paginator` 一样,但它却需要计算结果集中的数据量
7979

80-
换句话说`Paginator` 相当于查询语句构造器和 Eloquent 中的 `simplePaginate` 方法,而 `LengthAwarePaginator` 则相当于 `paginate` 方法。
80+
说白了就是`Paginator` 相当于查询语句构造器和 Eloquent 中的 `simplePaginate` 方法,而 `LengthAwarePaginator` 相当于 `paginate` 方法。
8181

82-
> {note} 当手动创建分页器实例时,你应该手动「切割」传递给分页器的结果集数组。如果你不确定如何去做到这一点,请查阅 PHP 的 [array_slice](https://secure.php.net/manual/en/function.array-slice.php) 函数。
82+
> {note} 手动创建分页器实例时,你应该手动「切割」传递给分页器的结果集数组。如果你不确定如何去做到这一点,请查阅 PHP 的 [array_slice](https://secure.php.net/manual/en/function.array-slice.php) 函数。
8383
8484
<a name="displaying-pagination-results"></a>
8585
## 显示分页结果
8686

87-
当调用 `paginate` 方法的时候,你将会接收到一个 `Illuminate\Pagination\LengthAwarePaginator` 实例。而当你调用 `simplePaginate` 方法时,你将会接收到一个 `Illuminate\Pagination\Paginator` 实例。这些对象提供了一些用于描述结果集的方法。除了这些辅助方法,分页器实例也是一个迭代器,并且可以作为数组循环。因此,一旦检索到结果集,你可以使用 [Blade](/docs/{{version}}/blade) 模板显示结果集并渲染页面链接:
87+
在调用 `paginate` 方法时,你将会接收到一个 `Illuminate\Pagination\LengthAwarePaginator` 实例。当调用 `simplePaginate` 方法时,你将会接收到一个 `Illuminate\Pagination\Paginator` 实例。这些对象提供了一些用于渲染结果集的函数。除了这些辅助函数,分页器实例是一个迭代器,也可以作为数组循环。因此,一旦检测到结果集,你可以使用 [Blade](/docs/{{version}}/blade) 模板显示结果集并渲染页面链接:
8888

8989
<div class="container">
9090
@foreach ($users as $user)
@@ -94,11 +94,11 @@
9494

9595
{{ $users->links() }}
9696

97-
`links` 方法将会链接渲染到结果集中其余的页。这些链接中每一个都已经包含了适当的 `page` 查询字符串变量。记住,`links` 方法生产的 HTML 兼容 [Bootstrap CSS framework](https://getbootstrap.com)
97+
`links` 方法将会链接渲染到结果集中其余的页面。每个链接都包含了正确的 `page` 查询字符串变量。记住,`links` 方法生成的 HTML [Bootstrap CSS 框架](https://getbootstrap.com) 兼容
9898

9999
#### 自定义分页器的 URI
100100

101-
`withPath` 方法允许你在生成链接时自定义分页器所使用的 URI 。例如,如果你想分页器生成的链接如 `http://example.com/custom/url?page=N`,你应该传递 `custom/url``withPath` 方法:
101+
`withPath` 方法允许你在生成链接时自定义分页器所使用的 URI。例如,如果你想要分页器生成像 `http://example.com/custom/url?page=N` 这样的链接,那就传递 `custom/url``withPath` 方法:
102102

103103
Route::get('users', function () {
104104
$users = App\User::paginate(15);
@@ -110,32 +110,35 @@
110110

111111
#### 附加参数到分页链接中
112112

113-
你可以使用 `append` 方法附加查询参数到分页链接中。例如,要附加 `sort=votes` 到每个分页链接,你应该这样调用 `append` 方法:
113+
你可以使用 `appends` 方法将查询参数附加到分页链接中。例如,要将 `sort=votes` 附加到每个分页链接,可以这样调用 `appends` 方法:
114114

115115
{{ $users->appends(['sort' => 'votes'])->links() }}
116116

117-
如果你希望附加「哈希片段」到分页器的链接中,你应该使用 `fragment` 方法。例如,要附加 `#foo` 到每个分页链接的末尾,应该这样调用 `fragment` 方法:
117+
如果想将「哈希片段」附加到分页器的链接中,就使用 `fragment` 方法。例如,要将 `#foo` 附加到每个分页链接的末尾,应该这样调用 `fragment` 方法:
118118

119119
{{ $users->fragment('foo')->links() }}
120120

121121
<a name="converting-results-to-json"></a>
122122
### 将结果转换为 JSON
123123

124-
Laravel 分页器结果类实现了 `Illuminate\Contracts\Support\Jsonable` 接口契约并且提供 `toJson` 方法,所以它很容易将你的分页结果集转换为 JSON。你也可以通过简单地从路由返回或者控制器 action 的方式,将分页实例转换为 JSON :
124+
Laravel 分页器结果类实现了 `Illuminate\Contracts\Support\Jsonable` 接口契约并且提供 `toJson` 方法,因此将分页结果转换为 JSON 非常简单。你也可以在路由或控制器操作中简单地将分页实例转换为 JSON 返回
125125

126126
Route::get('users', function () {
127127
return App\User::paginate();
128128
});
129129

130-
从分页器获取的 JSON 将包含元信息,如: `total`, `current_page`, `last_page` 等等。实际的结果对象将通过 JSON 数组中的 `data` 键来获取。 以下是一个从路由返回分页器实例创建的 JSON 示例:
130+
分页器中获取的 JSON 将包含元信息,如:`total``current_page``last_page` 等等。实际的结果对象将通过 JSON 数组中的 `data` 键来获取。 以下是一个从路由返回的分页器实例创建的 JSON 示例:
131131

132132
{
133133
"total": 50,
134134
"per_page": 15,
135135
"current_page": 1,
136136
"last_page": 4,
137+
"first_page_url": "http://laravel.app?page=1",
138+
"last_page_url": "http://laravel.app?page=4",
137139
"next_page_url": "http://laravel.app?page=2",
138140
"prev_page_url": null,
141+
"path": "http://laravel.app",
139142
"from": 1,
140143
"to": 15,
141144
"data":[
@@ -151,45 +154,46 @@ Laravel 分页器结果类实现了 `Illuminate\Contracts\Support\Jsonable` 接
151154
<a name="customizing-the-pagination-view"></a>
152155
## 自定义分页视图
153156

154-
在默认情况下,视图渲染显示的分页链接都兼容 Bootstrap CSS 框架。但是,如果你不使用 Bootstrap,你可以随意定义你自己的视图去渲染这些链接。当在分页器实例中调用 `links` 方法时,传递视图名称作为方法的第一参数即可
157+
默认情况下,渲染分页链接的视图与 Bootstrap CSS 框架兼容。但是,如果你不使用 Bootstrap,可以自由定义视图来渲染这些链接。在分页器实例中调用 `links` 方法时,只需将视图名称作为第一个参数传递给方法
155158

156159
{{ $paginator->links('view.name') }}
157160

158161
// Passing data to the view...
159162
{{ $paginator->links('view.name', ['foo' => 'bar']) }}
160163

161-
然而,自定义分页视图最简单的方法是通过 `vendor:publish` 命令将它们导出到你的 `resources/views/vendor` 目录:
164+
自定义分页视图的制作最简单的方法是使用 `vendor:publish` 命令将它们导出到 `resources/views/vendor` 目录:
162165

163166
php artisan vendor:publish --tag=laravel-pagination
164167

165-
这个命令将视图放置在 `resources/views/vendor/pagination` 目录中。这个目录下的 `default.blade.php` 文件对应于默认分页视图。你可以简单地编辑这个文件来修改分页的 HTML 。
168+
这个命令将这些视图放置在 `resources/views/vendor/pagination` 目录中。这个目录下的 `default.blade.php` 文件对应默认的分页视图,你可以简单地编辑这个文件来修改分页的 HTML 。
166169

167170
<a name="paginator-instance-methods"></a>
168171
## 分页器实例方法
169172

170-
每个分页器实例通过以下方法提供额外的分页信息
173+
每个分页器实例可以通过以下方法获取额外的分页信息
171174

172175
- `$results->count()`
173176
- `$results->currentPage()`
174177
- `$results->firstItem()`
175178
- `$results->hasMorePages()`
176179
- `$results->lastItem()`
177-
- `$results->lastPage() (Not available when using simplePaginate)`
180+
- `$results->lastPage()` (使用 simplePaginate 时不可用)
178181
- `$results->nextPageUrl()`
179182
- `$results->perPage()`
180183
- `$results->previousPageUrl()`
181-
- `$results->total() (Not available when using simplePaginate)`
184+
- `$results->total()` (使用 simplePaginate 时不可用)
182185
- `$results->url($page)`
183186

184187
## 译者署名
185188
| 用户名 | 头像 | 职能 | 签名 |
186189
|---|---|---|---|
187-
|<br>[@ChrisonWang](https://github.com/ChrisonWang) | <img class="avatar-66 rm-style" src="https://avatars0.githubusercontent.com/u/16531947?v=4&s=80"> | <br>翻译 | <br>[@王欣](https://www.linkedin.com/in/ChrisonWang/) at LinkedIn|
190+
| <br>[@ChrisonWang](https://github.com/ChrisonWang) | <img class="avatar-66 rm-style" src="https://avatars0.githubusercontent.com/u/16531947?v=4&s=80"> | <br>翻译 | <br>[@王欣](https://www.linkedin.com/in/ChrisonWang/) at LinkedIn |
191+
| [@JokerLinly](https://laravel-china.org/users/5350) | <img class="avatar-66 rm-style" src="https://dn-phphub.qbox.me/uploads/avatars/5350_1481857380.jpg"> | Review | Stay Hungry. Stay Foolish. |
188192

189-
---
193+
---
190194

191195
> {note} 欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
192-
>
196+
>
193197
> 转载请注明:本文档由 Laravel China 社区 [laravel-china.org](https://laravel-china.org) 组织翻译,详见 [翻译召集帖](https://laravel-china.org/topics/5756/laravel-55-document-translation-call-come-and-join-the-translation)
194-
>
195-
> 文档永久地址: https://d.laravel-china.org
198+
>
199+
> 文档永久地址: https://d.laravel-china.org

0 commit comments

Comments
 (0)