Yii2: checkboxList не показывает ArrayDataProvider - PullRequest
0 голосов
/ 07 мая 2019

Я хочу использовать checkboxList для отображения данных от поставщика данных.

Мой файл просмотра:

$offices = Offices::findMyOffices();
echo Html::checkboxList('name', [], $offices);

Файл моей модели:

public static function findMyOffices()
{    
    $dataProvider = new ArrayDataProvider([
        'allModels' => 'SELECT id_office ...'
    ]);

    return $dataProvider;
}

Но вид показывает мне список флажков с sql запросом вместо результатов sql запроса :

My checkbox list showing my select query instead of results

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

ArrayDataProvider нужен массив элементов.Вы можете добавить -> asArray () к вашему активному запросу.

$dataProvider = new ArrayDataProvider([
        'allModels' => [['id' => 1, 'title' => 'xxx, ...], ...],
    ]);

Мой любимый способ получения данных для выпадающего списка:

MyModel::find()->select('name', 'id')->indexBy('id')->column()
0 голосов
/ 07 мая 2019

Я решаю это using sqlDataProvider:

Вид:

$offices = Offices::findMyOffices();        
echo Html::checkboxList('name', [], ArrayHelper::map($offices, 'id_office', 'name_office'));

Модель:

public static function findMyOffices()
{    
    $dataProvider = new sqlDataProvider([
        'sql' => 'SELECT id_office ...'
    ]);

    return $dataProvider->getModels();
}
...