先从表的设计开始:
表的结构: CREATE TABLE `global_region` (
`region_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`region_name` varchar(120) NOT NULL DEFAULT '',
`region_type` tinyint(1) NOT NULL DEFAULT '2',
PRIMARY KEY (`region_id`),
KEY `parent_id` (`parent_id`),
KEY `region_type` (`region_type`)
) ENGINE=MyISAM AUTO_INCREMENT=3409 DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of global_region
-- ----------------------------
INSERT INTO `global_region` VALUES ('1', '0', '中国', '0');
INSERT INTO `global_region` VALUES ('2', '1', '北京', '1');
INSERT INTO `global_region` VALUES ('3', '1', '安徽', '1');
INSERT INTO `global_region` VALUES ('4', '1', '福建', '1');
INSERT INTO `global_region` VALUES ('5', '1', '甘肃', '1');
INSERT INTO `global_region` VALUES ('6', '1', '广东', '1');
INSERT INTO `global_region` VALUES ('7', '1', '广西', '1');
INSERT INTO `global_region` VALUES ('8', '1', '贵州', '1');
INSERT INTO `global_region` VALUES ('9', '1', '海南', '1');
INSERT INTO `global_region` VALUES ('10', '1', '河北', '1');
INSERT INTO `global_region` VALUES ('11', '1', '河南', '1');
INSERT INTO `global_region` VALUES ('12', '1', '黑龙江', '1'); 这里只贴出来数据库的一部分代码
这个是视图view层代码: <?=$form->field($model, 'provinces')->dropDownList(ArrayHelper::map(common\models\GlobalRegion::find()->where(['region_type'=>1])->asArray()->all(),'region_id','region_name'),
[
'style'=>'width:150px',
'prompt'=>'请选择省',
'onchange'=>'
$.post("index.php?r=user/lists&id='.'"+$(this).val(),function(data){
$("#user-citys").html("<option value=>请选择市</option>");
$("#user-countrys").html("<option value=>请选择县</option>");
$("#user-citys").append(data);
});',
])->label('省份'); ?> <?=$form->field($model, 'citys')->dropDownList(ArrayHelper::map(common\models\GlobalRegion::find()->where(['region_type'=>2])->asArray()->all(),'region_id','region_name'),
[
'style'=>'width:150px',
'prompt'=>'请选择市',
'onchange'=>' $.post("index.php?r=user/lists&id='.'"+$(this).val(),function(data){
$("#user-countrys").html("<option value=>请选择县</option>");
$("#user-countrys").append(data);
});',
])->label('市'); ?> <?=$form->field($model, 'countrys')->dropDownList(ArrayHelper::map(common\models\GlobalRegion::find()->where(['region_type'=>3])->asArray()->all(),'region_id','region_name'),
[
'style'=>'width:150px',
'prompt'=>'请选择县',
'onchange'=>'
$.post("index.php?r=branches/lists&amp;id='.'"+$(this).val(),function(data){ });',
])->label('区/县'); ?> 这里我没有用json,而是直接在后台把option拼出来了,不过我觉得可以试试json,不知道为什么,我用json时遍历时老是出错,回头我再试试

给个建议,用 DAO 而不是 AR 来查询更高效。而且用 DAO 查出来的直接就是数组了

Yii2中省市三级联动(栏目联动)的更多相关文章

  1. [moka同学笔记]Yii下国家省市三级联动

    第一次做省市三级联动时候遇到了坑,感觉还是自己太菜.头疼了很久研究了很久,最后终于发现了问题.大致总结一下思路 在控制器中实例化model,然后在视图中渲染所有国家,当选取国家时候,ajax通过 id ...

  2. JS实现年月日三级联动+省市区三级联动+国家省市三级联动

    开篇随笔:最近项目需要用到关于年月日三级联动以及省市区三级联动下拉选择的功能,于是乎网上搜了一些做法,觉得有一些只是给出了小的案例或者只有单纯的js还不完整,却很难找到详细的具体数据(baidu搜索都 ...

  3. 基于jQuery+ashx+.net实现三级栏目联动操作

    父级ID可以为空以两个编号为一级 可以添加到第四级 table 字段有ID. name .parentNode. childNode等基本属性  selecet  parentNode  ,len(c ...

  4. yii2中如何使用modal弹窗之基本使用

    作者:白狼 出处:http://www.manks.top/yii2_modal_baseuse.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...

  5. Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order      (id  order_name ...

  6. PHP在yii2中封装SuperSlide 幻灯片编写自己的SuperSlideWidget的例子

    因为近期给朋友公司做个门户网站,把荒置了6.7年的PHP又重新拾起,发现PHP这些年兴旺多了,很多新的东西看的不明不白,研究了几个框架ZendFramework.thinkphp.Symfony.yi ...

  7. [moka同学笔记]Yii2中多表关联查询(join、joinwith) (摘录)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_name       cu ...

  8. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)(转)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

  9. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

随机推荐

  1. 使用ffmpeg的av_read_frame,如何控制连接超时

    最近使用ffmpeg来做一个rtsp的客户端,这过程也遇到不少问题,不过相应都比较好,一路走下来.不过到项目结尾时,且遇到一个比较纠结的问题.那就是客户端在使用的过程中,把rtsp服务器的网断了.这时 ...

  2. (转)MPEG4码流简单分析

    把MPEG4码流的分析和它的I,P,B Frame的判定方法在这里简要记录一下吧,供日后的翻看和大家的参考.   测试解码器测试了很久,由于需要将H264和MPEG4的码流进行分析和判断,并逐帧输入解 ...

  3. ASP.NET WebApi 路由配置【转】

    一.路由介绍 ASP.NET Web API路由是整个API的入口.我们访问某个资源就是通过路由映射找到对应资源的URL.通过URL来获取资源的. 对于ASP.NET Web API内部实现来讲,我们 ...

  4. delphi程序热键

    要定义一个全局热键,通常有三个步骤:      1.定义Windows的消息WM_HOTKEY的HOOK链,即            procedure MyShortCut(Var Message: ...

  5. CentOS下yum安装PHP,配置php-fpm服务

    yum list installed | grep php 先删除已有的php版本 ,执行下面的命令删除php yum remove php-common 然后像安装那样问你是否继续的,输入yes即可 ...

  6. go-study

    package (包) 一个目录下面所有的.go文件的包名必须相同. 包名一般和目录名相同(是约定, 不是强制), 包名都小写 main包是一个特殊的包名, 在main包中, 必须包含func mai ...

  7. MongoDB创建表步骤,Mongo常用的数据库操作命令,查询,添加,更新,删除_MongoDB 性能监测

    ->use Admin         (切换到创建用户) ->db.TestDb          (创建数据库) ->db.addUser(“userName”,”Pwd”)   ...

  8. python2.0_s12_day10_Twsited异步网络框架

    Twsited异步网络框架 Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. Package application Configu ...

  9. Navicat无法启动,提示无法启动程序,因为计算机中丢失MSVCP140.dll

    .dll是一个动态链接库文件,Dynamic Link Library,是代码的封装,提供某种功能,可以被需要该功能的多个应用调用,提高代码的复用性 解决方法,下载并安装微软VC++2015版运行库 ...

  10. C语言各种存储模式的区别?最常用的存储模式有哪些?

    DOS用一种段地址结构来编址计算机的内存,每一个物理内存位置都有一个可通过段地址一偏移量的方式来访问的相关地址.为了支持这种段地址结构,大多数C编译程序都允许你用以下6种存储模式来创建程序: ---- ...