【GridView】
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'id', 'title', //'content:ntext', 'tags:ntext', //'status', [ 'attribute' => 'status', 'value' => 'status0.name', 'filter' => Poststatus::find()->select(['name','id'])//filiter的值是个数组 ->orderBy('position') ->indexBy('id') ->column(), ], // 'create_time:datetime', [ 'attribute' => 'update_time', 'format' => ['date','php:Y-m-d H:i:s'], ], //'author_id', [ 'attribute' => 'author_id', 'value' => 'author.nickname',// \models\Post.php中有getAuthor这个方法,改方法返回的是个model,Object对象; ], ['class' => 'yii\grid\ActionColumn'], ], ]);
【dataProvider】
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' => 6, ], 'sort' => [ 'defaultOrder' => [ 'id' => SORT_DESC,//按照ID排序 ], 'attributes' => [//可以排序的字段 'id', 'title' ], ], ]);
dataProvider常用方法
$dataProvider->getPagination() $dataProvider->getSort() $dataProvider->getCount() $dataProvider->getTotalCount()
$dataProvider->getModels()
每一项里面可以不要attribute但要留下value,还可以attribute+format
[ 'attribute' => 'update_time', 'format' => ['date','php:Y-m-d H:i:s'], ], //'author_id', [ //'attribute' => 'author_id', 'label' => '作者', 'value' => 'author.nickname', ],
【postsearch】

曾经遇到过一个问题,联表查询中,在这里输入ID的时候,会报错
Column 'id' in where clause is ambiguous
的意思是:列"id"是模棱两可的。原来是2张表都有id字段,应该指定是哪一张表的id。
所以postsearch中的id字段可以点明是那张表的id

【postsearch如何添加attribute】

搜索框的name根据attribute来的
首先views/post/index.php中

再models\PostSearch.php中
public function attributes()//重写attributes { return array_merge(parent::attributes(),['authorName']);//增加一个attribute } public function rules() { return [ [['id', 'status', 'create_time', 'update_time', 'author_id'], 'integer'], [['title', 'content', 'tags','authorName'], 'safe'],//此处添加一个authorName ]; }
最后再PostSearch的search函数中

浙公网安备 33010602011771号