Имеется стандартный виджет GridView, с колонкой "direction_id".
Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
...
[
'attribute' => 'direction_id',
'filter' => Direction::getList(),
'format' => 'raw',
'value' => function ($model, $key, $index, $column) {
return $model->direction->title;
},
],
...
],
]);?>
Сначала я поменял "$model->direction" на:
Код: Выделить всё
return ArrayHelper::getValue(Direction::getList(), $model->direction_id);
Код: Выделить всё
'filter' => $directions,
'value' => function ($model, $key, $index, $column) {
return ArrayHelper::getValue($directions, $model->direction_id);
},
Собственно возник вопрос, как это правильно реализовать?
В Yii 1 я бы создал публичное свойство в контроллере, в нужном методе записал туда массив записей и вызвал бы его через $this->property. В Yii 2 тоже есть такая возможность: \Yii::$app->controller->property, но почитав форум, я увидел, что такой вариант не рекомендуют. Поэтому прошу помощи у знающих людей, как решить мою проблему. Была ещё идея создать компонент, но я подумал, что это как-то слишком мудрёно.
Теги: yii2, gridview, columns, format, raw, arrayhelper.