yii2使用html模板怎么显示分页,YII2分页

[TOC]

### 一、使用LinkPager

#### 1.模型方式

~~~

// Controller中写入代码

$query = User::find();

$pagination = new Pagination(['totalCount' => $query->count(), 'defaultPageSize' => 2]);

$models = $query->offset($pagination->offset)->limit($pagination->limit)->all();

return $this->render('test', [

'models' => $models,

'pagination' => $pagination,

]);

~~~

对应view代码

~~~

= $model->id; ?>

= $model->username; ?>

= $model->email; ?>

echo LinkPager::widget([

'pagination' => $pagination,

]);

?>

~~~

#### 2.SQL方式

当单表无法满足需求时,就需要用到原生SQL进行实现,比如多表级联。

第1步 - SiteController 添加 actionTest() 方法

~~~

public function actionTest(){

$connection = Yii::$app->db;

$sql = "SELECT * FROM user";

$rows = $connection->createCommand($sql)->queryAll();

$pagination = new Pagination(['totalCount' => count($rows), 'defaultPageSize' => 2]);

$models = $connection->createCommand($sql." limit ".$pagination->limit." offset ".$pagination->offset."")->queryAll();

return $this->render('test',[

'models' => $models,

'pagination' => $pagination,

]);

}

~~~

对应view代码

~~~

use yii\widgets\LinkPager;

?>

= $model['id']; ?>

= $model['username']; ?>

= $model['email']; ?>

echo LinkPager::widget([

'pagination' => $pagination,

]);

?>

~~~

> 后台经常使用到GridView,因为GridView自带检索、排序、增删改查,很适合后台使用,所以这里讲一讲和GridView的结合。

### 二、 使用GridView

#### 1.模型方式

~~~

// Controller中写入代码

$dataProvider = new ActiveDataProvider([

'query' => User::find(),

]);

return $this->render('test', [

'dataProvider' => $dataProvider,

]);

}

~~~

对应view代码

~~~

= GridView::widget([

'dataProvider' => $dataProvider,

'columns' => [

['class' => 'yii\grid\SerialColumn'],

'id',

'username',

'email',

['class' => 'yii\grid\ActionColumn'],

],

]); ?>

~~~

#### 2.SQL方式

~~~

// Controller中写入代码

$count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM user WHERE status=:status', [':status' => 1])->queryScalar();

//这里用的是SqlDataProvider,更多可参考([数据提供者](http://www.kancloud.cn/wangking/yii2/211308))

$dataProvider = new SqlDataProvider([

'sql' => 'SELECT * FROM user WHERE status=:status',

'params' => [':status' => 1],

'totalCount' => $count,

'pagination' => [

'pageSize' => 20,

],

]);

return $this->render('test', [

'dataProvider' => $dataProvider,

]);

~~~

对应view代码

~~~

= GridView::widget([

'dataProvider' => $dataProvider,

'columns' => [

['class' => 'yii\grid\SerialColumn'],

'id',

'username',

'email',

['class' => 'yii\grid\ActionColumn'],

],

]); ?>

~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值