如果不使用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,不要你自己去根据用户的选择去做判断,是插入什么样的数据进数据表,非常方便。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.
太感谢了,我搞了一天,十分感谢