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'],//动做列,用于显示动做按钮(查看、更新、删除三个图标按钮) ],