Yii2实现上下联动下拉框功能的方法


Posted in PHP onAugust 10, 2016

本文实例讲述了Yii2实现上下联动下拉框功能的方法。分享给大家供大家参考,具体如下:

首先我先解释下什么是上下联动的下拉框

假如一个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>";
  }
}

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
yii框架中的Url生产问题小结
Jan 16 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
PHP版微信公众平台红包API
Apr 02 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
详解php中 === 的使用
Oct 24 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
php实现微信支付之现金红包
May 30 PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 #PHP
教你在header中隐藏php的版本信息
Aug 10 #PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 #PHP
PHP身份证校验码计算方法
Aug 10 #PHP
PHP5.4起内置web服务器使用方法
Aug 09 #PHP
PHP Filter过滤器全面解析
Aug 09 #PHP
学习PHP Cookie处理函数
Aug 09 #PHP
You might like
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
pymssql ntext字段调用问题解决方法
2008/12/17 Python
Python XML RPC服务器端和客户端实例
2014/11/22 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
numpy基础教程之np.linalg
2019/02/12 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
PHP面试题附答案
2015/11/28 面试题
数据库什么时候应该被重组
2012/11/02 面试题
护理自我鉴定范文
2013/10/06 职场文书
优秀党员获奖感言
2014/02/18 职场文书
党员公开承诺书
2014/03/25 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
学校清明节活动总结
2014/07/04 职场文书