0

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

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

在 _form.php 视图文件中。

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

4

3 回答 3

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()); 
于 2012-12-31T11:57:55.233 回答
1

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

于 2012-12-30T12:16:14.740 回答
0

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

如果该变量将仅在一个视图中使用并且涉及到 clases、ids,则该位置应该在同一个视图中

于 2012-12-30T12:38:05.393 回答