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 相关文章推荐
PHP中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
Feb 17 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
基于文本的搜索
2006/10/09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
PHP中的类型约束介绍
2015/05/11 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
酒店公关部经理岗位职责
2013/11/24 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
出国英文推荐信
2014/05/10 职场文书
班级联欢会主持词
2015/07/03 职场文书
Python基础之Socket通信原理
2021/04/22 Python
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS