Yii2:checkboxList不显示ArrayDataProvider

时间:2019-05-07 16:57:01

标签: php arrays yii2 checkboxlist

我想使用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 :(得分:0)

我解决了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();
}

答案 1 :(得分:0)

ArrayDataProvider需要一个项目数组。您可以在活动查询中添加-> asArray()。

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

我最喜欢为下拉列表获取数据的是:

MyModel::find()->select('name', 'id')->indexBy('id')->column()