View 在何处实现要在视图文件中显示的变量?

View 在何处实现要在视图文件中显示的变量?,view,yii,View,Yii,我想在Yii项目的表单中显示一个下拉列表,其中包含for items。我知道我可以用 echo $form->dropDownList($model,'element_id', $Options); 在_form.php视图文件中 哪里是实现$options变量的最佳地点?在哪个文件中?看法控制器 您应该将变量从控制器传递到视图。变量中的数据应来自模型。$选项将在更多视图中使用?如果答案是肯定的,我会把它放在主控制器(所有控制器扩展的那个)或main.php中 如果该变量仅在一个视图中

我想在Yii项目的表单中显示一个下拉列表,其中包含for items。我知道我可以用

echo $form->dropDownList($model,'element_id', $Options); 
在_form.php视图文件中


哪里是实现$options变量的最佳地点?在哪个文件中?看法控制器

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

$选项将在更多视图中使用?如果答案是肯定的,我会把它放在主控制器(所有控制器扩展的那个)或main.php中


如果该变量仅在一个视图中使用,并且与CLASE、ID有关,则该位置应位于同一视图中

出于此目的,当前模型是最佳选择,因为
\u form.php
可以访问该模型,因此您可以轻松获取数据。虽然可以将数据从控制器传递到
\u 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());