first commit
This commit is contained in:
93
common/PaginationHelper.php
Normal file
93
common/PaginationHelper.php
Normal file
@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\common;
|
||||
|
||||
|
||||
use yii\data\ActiveDataProvider;
|
||||
use yii\data\ArrayDataProvider;
|
||||
use yii\db\ActiveQuery;
|
||||
use yii\db\QueryInterface;
|
||||
use yii\di\NotInstantiableException;
|
||||
|
||||
class PaginationHelper
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* @param \yii\db\ActiveQuery $query
|
||||
* @param int $limit
|
||||
* @param string $pageParam
|
||||
* @param string $pageSizeParam
|
||||
*
|
||||
* @return \yii\data\ActiveDataProvider
|
||||
*/
|
||||
public static function createDataProvider($query, $limit = 10, $pageParam = 'page', $pageSizeParam = 'per_page')
|
||||
{
|
||||
$dataProvider = new ActiveDataProvider([
|
||||
'query' => $query,
|
||||
'pagination' => [
|
||||
//分页大小
|
||||
'pageSize' => \Yii::$app->request->get($pageSizeParam) ?: $limit,
|
||||
//设置地址栏当前页数参数名
|
||||
'pageParam' => $pageParam,
|
||||
//设置地址栏分页大小参数名
|
||||
'pageSizeParam' => $pageSizeParam,
|
||||
],
|
||||
]);
|
||||
|
||||
return $dataProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param int $limit
|
||||
* @param string $pageParam
|
||||
* @param string $pageSizeParam
|
||||
*
|
||||
* @return \yii\db\QueryInterface
|
||||
* @throws \yii\di\NotInstantiableException
|
||||
*/
|
||||
public static function createQueryProvider($query, $limit = 10, $pageParam = 'page', $pageSizeParam = 'limit')
|
||||
{
|
||||
$param = \Yii::$app->request->get();
|
||||
$pageSize = $param['limit'] ?: $param[$pageSizeParam];
|
||||
|
||||
if ($query instanceof QueryInterface) {
|
||||
return $query->limit($pageSize)->offset(($param[$pageParam] - 1) * $pageSize);
|
||||
}
|
||||
throw new NotInstantiableException('not instanceof QueryInterFace');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $array
|
||||
* @param int $limit
|
||||
* @param string $pageParam
|
||||
* @param string $pageSizeParam
|
||||
* @param array $orderFields
|
||||
*
|
||||
* @return ArrayDataProvider
|
||||
*/
|
||||
public static function createArrayDataProvider($array = [], $orderFields = [], $limit = 10, $pageParam = 'page', $pageSizeParam = 'limit')
|
||||
{
|
||||
$attributes = array_keys($orderFields);
|
||||
$order = $orderFields;
|
||||
$dataProvider = new ArrayDataProvider([
|
||||
'allModels' => $array,
|
||||
'sort' => [
|
||||
'attributes' => $attributes,
|
||||
'defaultOrder' => $order
|
||||
],
|
||||
'pagination' => [
|
||||
//分页大小
|
||||
'pageSize' => \Yii::$app->request->get($pageSizeParam, 10),
|
||||
//设置地址栏当前页数参数名
|
||||
'pageParam' => $pageParam,
|
||||
//设置地址栏分页大小参数名
|
||||
'pageSizeParam' => $pageSizeParam,
|
||||
],
|
||||
]);
|
||||
|
||||
return $dataProvider;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user