CHtml类参考:

http://www.yiichina.com/api/CHtml#activeDropDownList-detail

activeDropDownList() 方法
public static string activeDropDownList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$model CModel 数据模型
$attribute string 属性
$data array 生成列表选项的数据(值=>显示) 你可以使用listData来生成这个数据。请参阅listOptions来了解这个数据如何生成列表数据。注意,这里的值个标签会自动被这个方法进行HTML编码。
$htmlOptions array 附加的HTML属性。除了正常的HTML属性外,一些特殊的属性也是可以的(请参阅clientChangetag来了解更多详细信息。) 此外,下面的这属性也被支持:

  • encode: 布尔值,是否对值进行编码。默认为true。
  • prompt: 字符串,指定的作为第一个列表选项的提示文本。它的值为空。注意,提示文本不会被HTML编码。
  • empty: 字符串,指定空选项的文本,它的值为空。 'empty'选项也可以是一个值-标签对形式的数组。在一开始每个对都会用于渲染一个列表的选项。注意,文本标签不会被HTML编码。
  • options: 数组,为每个OPTION标签额外指定的属性。 数组的键名必须是选项的值, 数组的键值是选项标签的额外的属性,名称-值对的形式。例如,
        array(
    'value1'=>array('disabled'=>true, 'label'=>'value 1'),
    'value2'=>array('label'=>'value 2'),
    );
{return} string 生成的下拉列表

源码: framework/web/helpers/CHtml.php#1399 (显示)

为一个模型属性生成一个下拉列表。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss

listData() 方法
public static array listData(array $models, string $valueField, string $textField, string $groupField='')
$models array 模型对象的列表。 这个参数也可以是一个关联的数组(例如CDbCommand::queryAll的结果)。
$valueField string 列表选项值的属性名
$textField string 列表选项文本的属性名
$groupField string 列表选项组的属性名。如果是空,将不会生成组。
{return} array 可用于dropDownListlistBox等的列表数据。

为列表型HTML元素生成适当的数据。 生成的数据可用于dropDownListlistBoxcheckBoxListradioButtonList,和它们的加强版(比如activeDropDownList). 注意,这个方法不会对生成的数据HTML编码。 如果需要的话你可以调用encodeArray来给它编码。 请参阅value方法来了解如何指定值字段,文本字段以及组字段。

下面上代码:

生成下拉列表

Model中:

    public function getRoleList()
{
$returnArr = $this->findAll();
return CHtml::listData($returnArr, 'role', 'role'); //后两项为字段名,分别对应option的value和name
//return CHtml::listData($returnArr, 'cat_id', 'cat_name'); /*
//如果不使用CHtml::listData,也可以手动生成如下形式的数组
$returnArr = array(
'admin' => '管理员',
'user' => '普通用户',
);
return $returnArr;
*/
}

View中:

    <div class="row">
<?php echo $form->dropDownList($model,'role',User::model()->getRoleList(), array('prompt'=>'-请选择角色-')); ?>
</div>

完整示例:

form表单


下拉列表
Views中:
<?php echo $form->dropDownList($model,'cate_id',Category::model()->getCategoryList()); ?>
Models中:
public function getCategoryList()
{
$returnArr = $this->findAll();
return CHtml::listData($returnArr, 'cate_id', 'cate_name');
} 查询列表
Models中:
public function getCateName($id)
{
$currCate = $this->findByAttributes(array('cate_id'=>$id));
return $currCate->cate_name;
}
Views中: (admin.php)
//'cate_id',
array('name'=>'cate_id', 'value'=>'Category::model()->getCateName($data->cate_id)', 'filter'=>Category::model()->getCategoryList()),

生成多级联动下拉菜单请参考:

http://blog.csdn.net/dreamzml/article/details/8642229

http://www.jems.me/blog/web/84-yii-create-dropdown-lists-for-related-ar.html

http://blog.csdn.net/littlebearwmx/article/details/8566368

http://qoophp.com/archives/237

Yii 生成表单下拉选框及查询下拉选框的更多相关文章

  1. vue动态生成表单

    vue动态生成表单 一.下拉框 <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...

  2. 表单组件 form fastadmin(生成表单元素)

    Form组件 定义文件位置: /extend/fast/Formphp 通用参数 $name 通常为我们组件的名称(name属性值),我们在后台接收时可以通过这个名称来获取到它所对应的值 $value ...

  3. yii2自动生成表单

    视图中: 1.要use的两个文件类 use yii\helpers\Html;   use yii\widgets\ActiveForm; 2.生成表单,以添加商品为例说明.注意红线区域:上传文件需要 ...

  4. 基于PHP和mysql的自动生成表单

    开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...

  5. java自动生成表单简单实例

    数据库表设置 tb_form(form表单) 字段 类型 约束 说明 Id Int 主键 主键 Formid Varchar2(20) 唯一 Form表单id的值 Action Varchar2(20 ...

  6. vue自定义表单生成器,可根据json参数动态生成表单

    介绍 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置17种常用表单组件和自定义组件,再复杂的表单都可 ...

  7. html-4, form 表单 输入、传文件、单选、多选、下拉菜单、文本描述、重置、submit、按钮限制输入

    <!-- form HTTP协议 action:提交的服务器网址 method:get(默认)| post(应用:登录注册.上传文件) 页面中的a img link 默认是get请求 input ...

  8. Yii 2.0 ActiveForm生成表单 ,控制表单label和filed样式,filed一旦报错,前面lable颜色跟着变,看图,帮你解决

    需要生成如下图的表单样式,图一:

  9. 基于react hooks,antd4 配置生成表单并自动排列

    react后台项目,大多都是表单处理,比如下列4种常见1*n布局 (如果手工编码,大量的Row,Col, Form.Item的嵌套,排列,如果加上联动处理,代码将十分臃肿,不易维护) 一行一列 一行两 ...

随机推荐

  1. 身份证js验证

    <script type="text/javascript"> //--身份证号码验证-支持新的带x身份证 function isIdCardNo(num) { var ...

  2. MySQL的基本

    MySQL的基本语法 left JOIN 左表匹配右表 有没有内容全部匹配 SELECT Persons.LastName, Orders.OrderNo FROM Persons INNER JOI ...

  3. HTML 表格的书写方式:

    首先要进行reset  table{border-collapse:collapse;border-spacing:0;}th{text-align:inherit;} 1. caption标签对整个 ...

  4. thinkPHP add、save无法添加、修改不起作用

    案例:数据库新添加一字段,修改值不成功.解决方案:将Runtime/Data/_fields/下面的字段缓存删除,或者直接删除整个Runtime文件也是可以的分析:由于Thinkphp,采用字段缓存机 ...

  5. thinkphp多表查询

    在学习thinkphp 的过程中,需要对多表进行操作,但是在实际过程中,总是遇到各种问题,所以写下这篇博文,作为自己的学习历程 在操作过程中,两表查询都没有问题,但是三表查询就开始出现问题 有以下三张 ...

  6. STM32下载方法

    一.JLINK下载方法 1.硬件设置 Boot0,Boot1 = 0,*(测试通过) Boot0,Boot1 = 1,0或者0,1(未测试) 2.软件设置 MDK设置 ① 选择Project -> ...

  7. c++ 最短路两种算法

    最短路是个老问题了,大神们留下很多文档但是很多都是针对算法使用一些固定大小的数组进行数据存储在实际应用中受到限制,这里自己练习一下,主要用了一些c++的stl,减少了固定长度数组的依赖,换一种写法试图 ...

  8. MINA源码阅读之Future系

    首先Future系是对某个异步操作完成的监听:即setValue()的完成情况监听:get/setValue其实是对result字段封装,由此,可以这样讲,Future系其实对于对result字段状态 ...

  9. 【python之路7】python基本数据类型(一)

    一.运算符 1.算数运算符 +.-.*./.%(求余数).//(取整数部分) python2.x中,如果计算浮点数其中一个数字必须是浮点数否则按整数计算: 如python2.7中:print 9/2 ...

  10. Codeforces Round #316 div2

    一场充满血腥hack之战!!! Problem_A: 题意: n个候选人在m个城市进行投票,每个城市选出票数最多的一个候选人为城市候选人,如果票数相同,则取编号小的候选人. 再从这m个城市候选人中选出 ...