【问题标题】:yii2 load dropdown multiple selected itemsyii2 加载下拉多选项目
【发布时间】:2015-08-14 12:14:43
【问题描述】:

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

$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

我应该如何进行?

【问题讨论】:

    标签: drop-down-menu yii2


    【解决方案1】:

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

    $cats = ArrayHelper::map(Categories::find()->orderBy('name')->all();
    
    $form->field($model, 'fk_cat_id')->dropDownList($cats, 'fk_cat_id', 'name'));
    

    【讨论】:

    • 嘿!感谢您的反馈!但是,在这种情况下,我收到以下错误:array_merge(): Argument #2 is not an array.
    • 对不起,我忘了括号:map(Categories::find()->orderBy('name')->all())
    • 这并不能防止错误。分配fk_cat_idin dropDownList()似乎会抛出错误。我不明白为什么......
    • 似乎唯一的方法是获取控制器中选定值的 ID,将它们传递给视图,然后使用 BaseHtml 分配默认选定选项。
    • 在dropDownList() 中,参数应该是类别模型的id 字段,而不是fk_cat_id。再试一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2016-12-13
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    相关资源
    最近更新 更多