【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函数中

 

posted on 2018-10-25 17:10  longzhankunlun  阅读(136)  评论(0)    收藏  举报