首页 > 语言 > PHP > 正文

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

2024-05-04 23:54:50
字体:
来源:转载
供稿:网友

1、获取源码:

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'=>'选择县/区']  ]]);?> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选