Yii2实现中国省市区三级联动实例


Posted in PHP onFebruary 08, 2017

1、获取源码:yii2-region_jb51.rar

2、安装

添加到你的composer.json文件

"chenkby/yii2-region": "dev-master"

切换到项目目录

composer update;

3、配置

1) 在地区的Model中添加以下方法

public static function getRegion($parentId=0)
{
  $result = static::find()->where(['parent_id'=>$parentId])->asArray()->all();
  return ArrayHelper::map($result, 'id', 'name');
}

2) 在controller中添加以下action

public function actions()
{
  $actions=parent::actions();
  $actions['get-region']=[
    'class'=>\chenkby\region\RegionAction::className(),
    'model'=>\app\models\Region::className()
  ];
  return $actions;
}

3) 在common/config里的main.php中添加 urlManager的enablePrettyUrl的,即隐藏index.php

"urlManager" => [  
  //用于表明urlManager是否启用URL美化功能,在Yii1.1中称为path格式URL,  
  // Yii2.0中改称美化。  
  // 默认不启用。但实际使用中,特别是产品环境,一般都会启用。  
  "enablePrettyUrl" => true,  
  // 是否启用严格解析,如启用严格解析,要求当前请求应至少匹配1个路由规则,  
  // 否则认为是无效路由。  
  // 这个选项仅在 enablePrettyUrl 启用后才有效。  
  "enableStrictParsing" => false,  
  // 是否在URL中显示入口脚本。是对美化功能的进一步补充。  
  "showScriptName" => false,  
  // 指定续接在URL后面的一个后缀,如 .html 之类的。仅在 enablePrettyUrl 启用时有效。  
  "suffix" => "",  
  "rules" => [    
    "<controller:\w+>/<id:\d+>"=>"<controller>/view", 
    "<controller:\w+>/<action:\w+>"=>"<controller>/<action>"  
  ],
],

4、使用

<?= $form->field($model, 'district')->widget(\chenkby\region\Region::className(),[
  'model'=>$model,
  'url'=> \yii\helpers\Url::toRoute(['get-region']),
  'province'=>[
    'attribute'=>'province',
    'items'=>Region::getRegion(),
    'options'=>['class'=>'form-control form-control-inline','prompt'=>'选择省份']
  ],
  'city'=>[
    'attribute'=>'city',
    'items'=>Region::getRegion($model['province']),
    'options'=>['class'=>'form-control form-control-inline','prompt'=>'选择城市']
  ],
  'district'=>[
    'attribute'=>'district',
    'items'=>Region::getRegion($model['city']),
    'options'=>['class'=>'form-control form-control-inline','prompt'=>'选择县/区']
  ]
]);
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
编写自己的php扩展函数
Oct 09 PHP
PHP读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
PHP四大安全策略
Mar 12 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
PHP与Web页面的交互示例详解一
Aug 04 PHP
PHP+Ajax无刷新带进度条图片上传示例
Feb 08 #PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 #PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 #PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 #PHP
php实现XML和数组的相互转化功能示例
Feb 08 #PHP
PHP 获取指定地区的天气实例代码
Feb 08 #PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 #PHP
You might like
各种咖啡的英文名子是什么
2021/03/03 新手入门
融入意大利的咖啡文化
2021/03/03 咖啡文化
php获取表单中多个同名input元素的值
2014/03/20 PHP
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
python线程中同步锁详解
2018/04/27 Python
Django forms组件的使用教程
2018/10/08 Python
python 中如何获取列表的索引
2019/07/02 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
详解Python yaml模块
2020/09/23 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
学习保证书范文
2014/04/30 职场文书
消防标语大全
2014/06/07 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
竞聘自述材料
2014/08/25 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
车位出租协议书范本
2016/03/19 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android