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程序员编程注意事项
Apr 10 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
php 获取mysql数据库信息代码
Mar 12 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
PHP实现的简单日历类
Nov 29 PHP
smarty实现多级分类的方法
Dec 05 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
php弹出提示框的是实例写法
Sep 26 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
php获取某个目录大小的代码
2008/09/10 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
Python连接phoenix的方法示例
2017/09/29 Python
深入理解Python中的*重复运算符
2017/10/28 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Python装饰器原理与用法分析
2018/04/30 Python
python3 拼接字符串的7种方法
2018/09/12 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
会计专业自荐信
2014/06/03 职场文书
2014财务年终工作总结
2014/12/08 职场文书
外出培训学习心得体会
2016/01/18 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
Redis主从复制操作和配置详情
2022/09/23 Redis