yii 分页

1.控制器中的代码实现:

1.1方法一:

public function actionPage(){

		$query = User::find()->where(['name'=>'admin']);

		$countQuery = clone $query;
		$pages = new Pagination(['totalCount'=>$countQuery->count(),'defaultPageSize'=>1]);//设置数据总量与每页数据大小(几条)
		$models = $query->offset($pages->offset)//偏移量
				->limit($pages->limit)//此处获取的就是pageSize的值
				->all();

		return $this->render('page',[
			'models'=>$models,
			'pages'=>$pages,
		]);

	}


 

1.2方法二:

可以自定义一个方法,用来传递分页所需的参数方法如下(可以为其他方法公用分页):

/*
	 * 其中config的参数有:
	 * pageSize:设置每页大小
	 * order:数据的排序
	 * rows:返回的数组中数据对象的键名
	 * pages:返回的数组中分页的对象的键名
	 */
	public function getPageRows($query,$config=[]){
		$countQuery = clone $query;
		$pages = new Pagination(['totalCount'=>$countQuery->count()]);
		if(isset($config['pageSize']))
		{
			$pages->setPageSize($config['pageSize'],true);
		}
		$rows = $query->offset($pages->offset)->limit($pages->limit);
		if(isset($config['order'])){
			$rows = $rows->orderBy($config['order']);
		}
		$rows = $rows->all();
		$rowsLable = 'rows';
		$pagesLable = 'pages';
		if(isset($config['rows'])){
			$rowsLable = $config['rows'];
		}
		if(isset($config['pages'])){
			$pagesLable = $config['pages'];
		}
		$ret = [];
		$ret[$rowsLable] = $rows;
		$ret[$pagesLable] = $pages;
		return $ret;
}

控制器中代码如下:

 

 

public function actionPage(){
		
		$query = User::find()->where(['name'=>'admin']);
		$locals = $this->getPageRows($query,['order'=>'id desc','pageSize'=>2,'rows'=>'models']);
		return $this->render('page',$locals);
	}

2.视图中的代码如下:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/7/27
 * Time: 15:45
 */
use yii\widgets\LinkPager;
$id = 5;
$count = 1;
if($this->beginCache($id,['duration'=>3,])){

foreach($models as $item){

?>

<p><?php echo $item["introduce"];?></p>

<?php }
    echo LinkPager::widget(['pagination'=>$pages]);//页码
    $this->endCache();
}
?>


 

好了完整的分页功能好了,可以使用了!

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值