Yii2 实现上下联动的下拉框
2015-06-08 01:09
561 查看
首先我先解释下什么是上下联动的下拉框
假如一个view里面有两个select,第一个是公司名,第二个是分公司名。公司有多个,每个公司又有多个分公司,我们实现的就是点击当前公司后,分公司里面显示的事当前公司的分公司。
或者你直接理解成选择所属省份后,下面的select显示的是当前省份的县。
两个select的部分视图代码如下
list方法代码
假如一个view里面有两个select,第一个是公司名,第二个是分公司名。公司有多个,每个公司又有多个分公司,我们实现的就是点击当前公司后,分公司里面显示的事当前公司的分公司。
或者你直接理解成选择所属省份后,下面的select显示的是当前省份的县。
原理
点击第一个select后,执行ajax获取当前公司的分公司,并使用jquery修改分公司内容两个select的部分视图代码如下
<?= $form->field($model, 'companies_company_id')->dropDownList( \yii\helpers\ArrayHelper::map(\backend\models\Companies::find()->all(),'company_id','company_name'), [ 'prompt'=>'select Company', 'onchange'=>' $.post("index.php?r=branches/lists&id='.'"+$(this).val(),function(data){ $("select#departments-branches_branch_id").html(data); });', ] ) ?> <?= $form->field($model, 'branches_branch_id')->dropDownList( \yii\helpers\ArrayHelper::map(\backend\models\Branches::find()->all(),'branch_id','branch_name'), [ 'prompt'=>'Select Branches', ] ) ?>
list方法代码
public function actionLists($id) { $countBranches = Branches::find() ->where(['companies_company_id' => $id]) ->count(); $branches = Branches::find() ->where(['companies_company_id' => $id]) ->all(); if ($countBranches > 0) { foreach ($branches as $branche) { echo "<option value='" . $branche->branch_id . "'>" . $branche->branch_name . "</option>"; } } else { echo "<option>-</option>"; } }
相关文章推荐
- Yii2同时搜索多个字段
- Yii2让关联字段支持搜索功能
- Yii2中多表关联查询(hasOne、hasMany、join、joinwith)
- Yii2关联查询用法
- Yii2基本的访问控制AccessControl的一些理解
- Yii获取当前url和域名的方法
- php查询whois信息的方法
- php实现有趣的人品测试程序实例
- 浅谈PHP中Stream(流)
- php判断用户是否手机访问代码
- 使用PhpStorm开发PHP环境搭建
- OS X Yosemite 10.10. 自带PHP环境gd库扩展缺少freetype 解决办法
- Z-BlogPHP
- 对php,mysql全文搜索的完全分析
- stp
- PHP操作符与控制结构
- PHP preg正则
- windows下使用php自带的mail函数实现简单的邮件发送实例(QQ亲试成功)
- ZipInputStream & ZipOutputStream
- 常用的PHP正则表达式收集整理