GridView提供排序,分頁和過濾數據等功能。 基本用法以下:php
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $filterModel 'columns' => [ 'id', 'name', 'created_at:datetime', // ... ], ]) ?>
用dataProvider鍵指定數據提供者;用filterModel指定搜索過濾功能的搜索模型;用columns鍵指定須要展現的列及其格式。數組
全部的這些數據提供者ActiveDataProvider遵照如下模式:yii
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination'=>['pageSize'=>5], 'sort'=>['defaultOrder'=>['id'=>SORT_ASC]] ]);
filterModel綁定了對應的查詢類(如PostSearch)在須要查詢輸入關聯表字段數據時,能夠經過在PostSearch類裏先新增重寫模型類的屬性,而後再經過Search方法查詢:ide
一、重寫attributes方法,調用array_merge()來添加一個新的屬性(以下新增了authorName)函數
public function attributes() { return array_merge(parent::attributes(),['authorName']); }
二、在屬性規則里加上新定義的屬性post
public function rules() { return [ [['id', 'status', 'create_time', 'update_time', 'author_id'], 'integer'], [['title', 'content', 'tags','authorName'], 'safe'],//在這裏面加上authorName ]; }
三、在Search方法裏,join關聯的表進行查詢this
$query->join('inner join','Adminuser','Post.author_id=Adminuser.id') ->andFilterWhere(['like','Adminuser.nickname',$this->authorName]);
對於columns鍵指定須要展現的列及其格式,能夠有如下鍵url
attribute:指定須要展現的屬性;code
lable:標籤名;orm
value:值;
format:格式;
filter:自定義過濾條件的輸入框;
contentOption:設置列的HTML格式屬性;
'columns' => [ //['class' => 'yii\grid\SerialColumn'],//序號列,即行號(從1開始自動增加) //'id', [ 'attribute'=>'id', 'contentOptions'=>['width'=>'30px'], ], //'content:ntext', //經過Comment的getter設置,顯示前20個字符 [ 'attribute'=>'content', 'value'=>'begining', ], /* //經過$value匿名函數設置顯示長度 [ 'attribute'=>'content', 'value'=>function($model){ $str=strip_tags($model->content);//strip_tags方法從字符串中去除 HTML 和 PHP 標記 $strLength=mb_strlen($str);//mb_strlen獲取字符串的長度 return mb_substr($str,0,20,'utf-8').(($strLength>=8)?'...':'');//mb_substr方法獲取部分字符串 } ], */ //'status', [ 'attribute'=>'status', 'value'=>'status0.name', 'filter'=>common\models\Commentstatus::find()//獲取一個數組用於填充下拉查詢 ->select(['name','id']) ->orderBy('position') ->indexBy('id') ->column(), ], //'create_time:datetime', [ 'attribute'=>'create_time', 'format'=>['date','php:Y-m-d H:i:s'] ], //'userid', [ 'attribute'=>'userid', 'value'=>'user.username' ], //'email:email', //'url:url', //'post.title', //此處使用了添加Searc類裏新屬性的方法實現關聯表查詢 [ 'attribute'=>'postTitle', 'label'=>'文章標題', 'value'=>'post.title', ], ['class' => 'yii\grid\ActionColumn'],//動做列,用於顯示動做按鈕(查看、更新、刪除三個圖標按鈕) ],