Подскажите, пожалуйста, как это правильно реализовать и что читать для того чтобы не задавать в дальнейшем такие вопросы?
Например, есть у меня страница с GridView таблицей, хочу добавить фильтр с выпадающим списком. Как я это реализовал:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'tableOptions' => [
'class' => 'table table-list table-scientist'
],
'columns' => [
['class' => 'yii\grid\SerialColumn', 'header' => '№'],
[
'attribute' => 'name'
],
'itemScientist.birth_date:date',
[
'attribute' => 'rank',
'value' => function($model) {
$model->rank->name
},
'filter' => Select2::widget([
'model' => $searchModel,
'multiple' => true,
'attribute' => 'rank',
<b> 'data' => ArrayHelper::map(Catalog::find()->where(['type' => Catalog::TYPE_RANK])->asArray()->all(), 'id', 'name'),</b>
'options' => [
'placeholder' => ' '
]
]),
],
],
]); ?>
Вопрос особенно интересен в пункте где получаю data. Знаю правило, что запросы в бд из view делать "ужасно, плохо и тд" и я с этим согласен. Но как тогда делать правильно?