Welcome

首页 / 网页编程 / PHP / Yii2实现中国省市区三级联动实例

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
egionRegionAction::className(),"model"=>appmodelsRegion::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
egionRegion::className(),["model"=>$model,"url"=> yiihelpersUrl::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"=>"选择县/区"]]]);?> 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。