/** * @return ActiveDataProvider */ public function run() { if ($this->checkAccess) { // additional authorization conditions are added in getQuery() method // using the "authorized" query call_user_func($this->checkAccess, 'read'); } $model = new $this->modelClass(); $searchModel = $this->getSearchModel(); if ($this->prepareDataProvider !== null) { $dataProvider = call_user_func($this->prepareDataProvider, $this); } else { $dataProvider = $this->prepareDataProvider($searchModel); } $searchFields = FormBuilder::getFormFields($searchModel, array_merge($this->getFields($searchModel, 'searchForm'), $this->getExtraFields($searchModel, 'searchForm')), true); $columns = $this->getIndexGridColumns($model, $this->getFields($model, 'grid')); return ['dataProvider' => $dataProvider, 'columns' => $columns, 'buttons' => $this->getDefaultGridButtons($dataProvider), 'searchModel' => $searchModel, 'searchFields' => $searchFields]; }
/** * Prepares response params, like fields and relations. * @param ActiveRecord $model * @return array */ protected function getResponse($model) { $hiddenAttributes = array_filter(explode(',', Yii::$app->getRequest()->getQueryParam('hide', ''))); $fields = FormBuilder::getFormFields($model, $this->getFields($model, 'form'), false, $hiddenAttributes); return ['model' => $model, 'fields' => empty($fields) ? [] : [$fields], 'relations' => $this->getModelRelations($model, $this->getExtraFields($model))]; }