Yii 下拉列表-dropdownlist

如果不使用Yii框架,我们可以直接使用select tag来写我们的下拉列表。

例如:

<select>
    <option value='F'>Female</option>
    <option value='M'>Male</option>
</select>

很简单是吧,也很方便。但是如果我们想使用数据库的数据来生成一个下拉列表,是不是就有点麻烦了,

1. 连接数据库

2. query

3. 循环取出结果中所有的数据

4. 根据结果的中个数生成select的每一个option

但是如果你用yii做,这些步骤统统省去,只需要一步即可完成:

如果是静态的:

$form->dropDownList($model, 'field_name', array(1=>'test1', 2=>'test2'))

如果是动态的:

$form->dropDownList( $model, ‘name’, CHtml::listData( modelname::model()->findAll(), ‘id’, ‘name’) );

$form是你view中生成的form, 根据你生成form名字不同,修改它,$model是你对应的模型的名字,也是你自己定, name是和你model数据表中字段的名字一致就行,modelname是模型对应的类名,比如说你的是User,那这里就是UserRole::model()->findAll()。id和name是你要去列表的那个表中字段,第一个是将作为option的value,第二个显示名字。

典型应用场景:

创建user时,需要选择user的角色,有个表专门定义user的角色,表名是UserRole,User这个表中有一个外键role,它的值是UserRole的主键,UserRole的主键是id,另外一个字段是name,我们将显示给用户。

那么上面的哪一行代码变成:

$form->dropDownList( $model, ‘name’, CHtml::listData( UserRole::model()->findAll(), ‘id’, ‘name’) );

这样当插入数据的时候,直接就插入对应role的ID,不要你自己去根据用户的选择去做判断,是插入什么样的数据进数据表,非常方便。

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

1 thought on “Yii 下拉列表-dropdownlist

Leave a Reply

Your email address will not be published. Required fields are marked *