Drop down menu 一个表单中的Yii和Dropdown

Drop down menu 一个表单中的Yii和Dropdown,drop-down-menu,yii,Drop Down Menu,Yii,我是Yii框架的新手 我有一个有三个字段的表单。我需要其中一个是select下拉元素,它的数据来自mysql表中先前添加的数据 如何操作?如果为包含要在下拉列表中使用的数据的表设置了模型,则可以使用呈现下拉列表的方法,并将该模型呈现为列表的项目,例如 echo CHtml::dropDownList( 'attribute_name', '', CHtml::listData(MyOtherModel::model()->findAll(),'id','name')

我是Yii框架的新手

我有一个有三个字段的表单。我需要其中一个是select下拉元素,它的数据来自mysql表中先前添加的数据


如何操作?

如果为包含要在下拉列表中使用的数据的表设置了模型,则可以使用呈现下拉列表的方法,并将该模型呈现为列表的项目,例如

echo CHtml::dropDownList(
    'attribute_name',
    '',
    CHtml::listData(MyOtherModel::model()->findAll(),'id','name')
);
我经常使用Gii,它使用CActiveForm小部件来显示表单,如果您的表单也使用CActiveForm,您可以将下拉列表呈现为:

$form=$this->beginWidget('CActiveForm', array(
    'action'=>Yii::app()->createUrl($this->route),
    'method'=>'get',
));

...

echo $form->label($model,'attribute_name');
echo $form->dropDownList(
    $model,
    'attribute_name',
    CHtml::listData(MyOtherModel::model()->findAll(),'id','name')
);

...

$this->endWidget();

请注意,CActiveForm使用的是而不是我在第一个示例中使用的
CHtml::dropDownList()
,因此我的两个示例在语法上略有不同。

谢谢。我采用了第二种方法。‌但是我如何才能在listData中的项之前添加一个空白选项呢?您可以
array\u merge(array(''=>''),CHtml::listData(MyOtherModel::model()->findAll(),'id','name'))
在列表的开头添加一个空白数组项。再次感谢您。请你回答另一个问题好吗?