我想在Yii项目的表单中显示带有项目的下拉列表。我知道我可以使用
echo $form->dropDownList($model,'element_id', $Options);
在_form.php视图文件中。
实现$ options变量的最佳位置在哪里?在哪个文件?看?控制器?
答案 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相关,则该位置应位于同一视图中