我想在 Yii 项目的表单中显示一个带有 for items 的下拉列表。我知道我可以使用
echo $form->dropDownList($model,'element_id', $Options);
在 _form.php 视图文件中。
实现 $options 变量的最佳位置在哪里?在哪个文件中?看法 ?控制器 ?
当前模型是实现此目的的最佳选择,因为_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());
您应该将变量从控制器传递到视图。变量中的数据应该来自模型。
$options 将在更多视图中使用?如果答案是肯定的,我会将它放在主控制器(所有控制器都扩展的那个)或 main.php 中。
如果该变量将仅在一个视图中使用并且涉及到 clases、ids,则该位置应该在同一个视图中