我应该直接从视图yii2调用模型吗


Should i calling model direct from view yii2

我有点困惑,因为这里是视图它们直接调用模型,因此不会将其传递给控制器。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']
) ?>