Yii2 implements three-level linkage examples of provinces and municipalities in China

高洛峰
Release: 2023-03-05 16:56:02
Original
1598 people have browsed it

Yii2 realizes the three-level linkage instance of China's provinces and municipalities

Installation

Add to your composer.json file

"chenkby/yii2-region": "dev-master"
Copy after login

Switch to the project Directory

composer update;

3. Configuration

1) Add the following method in the model of the region

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

2) In the controller Add the following action

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

3) Add enablePrettyUrl of urlManager in main.php in common/config, that is, hide 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>" 
  ],
],
Copy after login

4. Use

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

The above is the entire content of this article. I hope it will be helpful to everyone's study. I also hope that everyone will support the PHP Chinese website.

MoreYii2 implements three-level linkage examples of provinces and municipalities in ChinaFor related articles, please pay attention to the PHP Chinese website!

Related articles:

Use PHP to realize three-level linkage in urban areas with attached database

js to realize the effect of three-level linkage menu in provinces and municipalities

Example code to implement ajax three-level linkage drop-down menu

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template