我有一个表单,其中有一个包含多个选择的下拉列表。
$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
我该怎么办?
答案 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'));