在视图文件中显示变量的位置?

时间:2012-12-30 10:45:04

标签: view yii

我想在Yii项目的表单中显示带有项目的下拉列表。我知道我可以使用

echo $form->dropDownList($model,'element_id', $Options); 

在_form.php视图文件中。

实现$ options变量的最佳位置在哪里?在哪个文件?看?控制器?

3 个答案:

答案 0 :(得分:11)

当前模型是此目的的最佳选择,因为_form.php可以访问模型,因此您可以轻松获取数据。虽然您可以将数据从控制器传递到_form.php,但这是更多的工作。

如果要填充数据库中的数据 - 例如,您希望显示数据库表tbl_countries中的国家/地区 - 您可以在模型中编写一个函数来加载它们:

/* Get all countries. */
public function getCountries(){
  $allCountries =  Countries::model()->findAll();
  return CHtml::listData($allCountries, "id", "name")
}

这将为您提供一个数组,其中ID号为键,国家/地区名称为值。然后,您可以从视图文件中调用此函数:

echo $form->dropDownList($model,'element_id', $model->countries()); 

答案 1 :(得分:1)

您应该将控制器中的变量传递给视图。变量中的数据应来自模型。

答案 2 :(得分:0)

$ options将用于更多视图?如果答案是肯定的,我会将它放在主控制器上(所有控制器都扩展)或在main.php中。

如果该变量仅在一个视图中使用并且与clases,id相关,则该位置应位于同一视图中