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

时间:2015-11-30 17:35:24

标签: php model-view-controller 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 在底部再次有一个最好的Prictice部分和一个主题 是:(视图)不应包含执行数据库查询的代码。这些代码应该在模型中完成。

由于

1 个答案:

答案 0 :(得分:2)

我同意你对“最佳实践”的理解。我认为我们应该避免调用在视图中执行db查询的方法。此外,所有查询都已在模型中。因此,在那里进行外部查询对我没有意义。

我使用Yii2框架(不是由我创建)处理了一些项目,我在这里进行了快速搜索。唯一与我类似的情况就是当我们有一个表格或网格视图并尝试显示所有出现的另一个模型时。

在那种情况下,我更喜欢在我的模型中创建一个函数来处理这个问题。类似的东西:

<强> MODEL

/**
 * @return array
 */
public function getAllAnotherModel()
{
    return AnotherModel::find()->all();
}

查看:

<?= $form->field($model, "id_another_model")->dropDownList(
    ArrayHelper::map($model->allAnotherModel, 'id', 'name'),
    ['prompt' => 'Select']
) ?>