yii2加载下拉多个选定项目

时间:2015-08-14 12:14:44

标签: drop-down-menu yii2

我有一个表单,其中有一个包含多个选择的下拉列表。

$items = ArrayHelper::map(Categories::find()->orderBy('name')->all(), 'id', 'name');

echo $form
    ->field($cats, 'fk_cat_id')
    ->dropDownList(
        $items, 
        ['prompt' => 'Select category', 'multiple' => 'multiple']
    )
    ->label('Category')

在控制器中,当我将模型传递给视图时,类似模型如下所示:

$cats = Categories::find()->where(['fk_model_id' => $id])->one();

在这种情况下,一切正常,并且已选择一个已分配给模型的项目。但是,如果我想自动选择所有这样的值:

$cats = Categories::find()->where(['fk_model_id' => $id])->all();

然后我收到以下错误:

Call to a member function formName() on a non-object

我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用one()可以获得模型但是使用all()可以获得模型数组(ActiveQuery),您必须在视图或控制器中填充dropDown作为另一个变量。例如,在您的视图中尝试:

$cats = ArrayHelper::map(Categories::find()->orderBy('name')->all();

$form->field($model, 'fk_cat_id')->dropDownList($cats, 'fk_cat_id', 'name'));