我有点困惑,因为这里是视图它们直接调用模型,因此不会将其传递给控制器。http://www.yiiframework.com/doc-2.0/guide-input-forms.html滚动到页面底部。。。
echo $form->field($model, 'product_category')->dropdownList(
ProductCategory::find()->select(['category_name', 'id'])->indexBy('id')->column(),
['prompt'=>'Select Category']
);
还有这里的导游http://www.yiiframework.com/doc-2.0/guide-structure-views.html在底部还有一个最佳实践部分和一个主题is:(视图)不应包含执行DB查询的代码。这样的代码应该在模型中完成。
感谢
我同意您对"最佳实践"的理解。我认为我们应该避免调用在视图中执行数据库查询的方法。此外,所有查询都已在模型中。因此,在外部进行外部查询对我来说是没有意义的。
我使用Yii2框架(不是我创建的)处理了一些项目,我只是在这里快速搜索了一下。我遇到的唯一类似的情况是,当我们有一个窗体或网格视图,并试图显示另一个模型的所有出现。
在这种情况下,我更喜欢在我的模型中创建一个函数来处理这个问题。类似于:
型号
/**
* @return array
*/
public function getAllAnotherModel()
{
return AnotherModel::find()->all();
}
视图:
<?= $form->field($model, "id_another_model")->dropDownList(
ArrayHelper::map($model->allAnotherModel, 'id', 'name'),
['prompt' => 'Select']
) ?>