public static function getColumnsByContent($cmsContent = null, $dataProvider = null) { $autoColumns = []; if (!$cmsContent) { return []; } $model = CmsContentElement::find()->where(['content_id' => $cmsContent->id])->one(); if (!$model) { $model = new CmsContentElement(['content_id' => $cmsContent->id]); } if (is_array($model) || is_object($model)) { foreach ($model as $name => $value) { $autoColumns[] = ['attribute' => $name, 'visible' => false, 'format' => 'raw', 'class' => \yii\grid\DataColumn::className(), 'value' => function ($model, $key, $index) use($name) { if (is_array($model->{$name})) { return implode(",", $model->{$name}); } else { return $model->{$name}; } }]; } $searchRelatedPropertiesModel = new \skeeks\cms\models\searchs\SearchRelatedPropertiesModel(); $searchRelatedPropertiesModel->initProperties($cmsContent->cmsContentProperties); $searchRelatedPropertiesModel->load(\Yii::$app->request->get()); if ($dataProvider) { $searchRelatedPropertiesModel->search($dataProvider); } /** * @var $model \skeeks\cms\models\CmsContentElement */ if ($model->relatedPropertiesModel) { $autoColumns = ArrayHelper::merge($autoColumns, GridViewStandart::getColumnsByRelatedPropertiesModel($model->relatedPropertiesModel, $searchRelatedPropertiesModel)); } } return $autoColumns; }