我有点困惑,因为在这里
他们直接调用模型,因此不通过控制器传递它。http://www.yiiframework.com/doc-2.0/guide-input-forms.html 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-struct-views.html http://www.yiiframework.com/doc-2.0/guide-structure-views.html在底部再次有一个最佳实践部分和主题之一
is:(视图)不应包含执行数据库查询的代码。此类代码应该在模型中完成。
Thanks
我同意你对“最佳实践”的理解。我认为我们应该避免调用在视图内执行数据库查询的方法。另外,所有查询都已在模型中。因此,对我来说,在外面进行外部查询是没有意义的。
我使用 Yii2 框架(不是我创建的)处理了一些项目,我只是在这里进行了快速搜索。我遇到的唯一与此类似的情况就是当我们有一个表单或网格视图并尝试显示另一个模型的所有出现时。
在这种情况下,我更喜欢在模型中创建一个函数来处理这个问题。就像是:
MODEL
/**
* @return array
*/
public function getAllAnotherModel()
{
return AnotherModel::find()->all();
}
VIEW:
<?= $form->field($model, "id_another_model")->dropDownList(
ArrayHelper::map($model->allAnotherModel, 'id', 'name'),
['prompt' => 'Select']
) ?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)