阿江 2017-10-15 07:14:23 3207次浏览 0条回复 1 1 0

说明

学习Yii Framework 2易2框架的过程是漫长的也是充满乐趣的以下是我学习Yii2框架时对官网英文资料(请参见原文网址)的翻译和代码实现提供了较完整的代码供你参考不妥之处请多多指正

原文网址:

http://www.yiiframework.com/doc-2.0/guide-output-pagination.html

本文主题:数据的分页显示(Pagination)

当在一个网页中有太多的数据被显示时,一个常用的策略是将它们显示在多页中,每页仅显示一小部分数据。这个策略被称为分页(pagination)。

Yii使用yii\data\Pagination对象来表示分页模式,特别是: total count:定义数据项的总数,注意这个数字通常比需要显示在一个页面中的数据项要多。 page size:定义每页包含的数据项,默认值是20。 current page:当前页数(从0开始),默认值是0,也就是第1页。

使用一个全定义的yii\data\Pagination对象,你可以获取和显示数据的一部分。例如,如果你是从数据库中获取的数据,你可以定义DB查询的OFFSET和LIMIT项为分页对象提供的数值。代码如下:

use yii\data\Pagination;
//构建一个获取所有status=1的文章的DB查询语句
$query=Article::find()->where(['status'=>1]);
//获取文章的总数(但并没有获取所有文章数据)
$count=$query->count();
//使用文章总数创建一个分页对象
$pagination=new Pagination(['totalCount'=>$count]);
//使用分页对象获取限定的文章数据
$articles=$query->offset($pagination->offset)
	->limit($pagination->limit)
	->all();

上面的例子会返回哪一页的文章呢?它由一个名为page的查询参数决定。默认情况下,分页对象会尝试将page参数值设置为当前页,如果此参数为空,则默认值为0。 为了让分页的前台显示更加方便,Yii提供了yii\widgets\LinkPager小部件来显示页数按钮,用户可以点击按钮即可显示相应页码的数据。这个小部件需要分页对象这样它才能知道当前页数,以及显示多少个页码按钮,例如:

use yii\widgets\LinkPager;
echo LinkPager::widget([
	'pagination'=>$pagination,
]);

如果你要手动构建UI元素,你可以使用yii\data\Patination::createUrl()去创建指向各个页面的URL,此方法需要一个页码参数,将创建一个包含页参数的已格式化URL的属性,例如:

//定义创建URL将要使用到的路由
//如果你没有定义它,当前请求路由将被使用
$pagination->route='article/index';
//将显示:/index.php?r=article%2Findex&page=100
echo $pagination->createUrl(100);
//将显示:/index.php?r=article%2Findex&page=101
echo $pagination->creaetUrl(101);

小贴士:当创建分页对象时,你可以通过设置pageParam属性来自定义page查询参数的名称。

(全文完)

觉得很赞
    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册