[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代碼
~~~
<?php foreach ($models as $model): ?>
<?= $model->id; ?>
<?= $model->username; ?>
<?= $model->email; ?>
<br/>
<?php endforeach; ?>
<?php
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代碼
~~~
<?php
use yii\widgets\LinkPager;
?>
<?php foreach ($models as $model): ?>
<?= $model['id']; ?>
<?= $model['username']; ?>
<?= $model['email']; ?>
<br/>
<?php endforeach; ?>
<?php
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.hmoore.net/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'],
],
]); ?>
~~~
- 基礎教程
- 入門安裝
- Yii2 composer 安裝慢解決
- Cookies
- 數據庫操作
- 數據提供者
- 助手類
- 驗證規則
- GridView
- DetailView
- YII2分頁
- JS、CSS的引用
- Excel導出
- 中文轉拼音
- 發送郵件
- 第三方插件
- Session跨域共享
- Url跨域訪問
- 場景應用
- 查詢條件鏈
- Session分布式共享
- Redis的使用
- mongodb
- 高級教程
- 自定義gii模板
- 角色權限管理(RBAC)
- user組件的配置
- 國際化(I18N)
- 小部件(Widget)
- 模塊(Module)
- 行為(Behavior)
- 緩存(Cache)
- migrate 數據庫遷移
- phpstorm
- 快捷鍵
- 自定義
- 其它插件