ovidiupop / yii2-nordicgeo
Yii2-NordicGeo 是一个强大的 Yii2 组件,旨在无缝集成北欧国家的地理 API。
dev-main
2024-01-02 20:19 UTC
Requires
- yiisoft/yii2: 2.*
This package is auto-updated.
Last update: 2024-10-01 00:09:24 UTC
README
Yii2-NordicGeo 是一个强大的 Yii2 组件,旨在无缝集成北欧国家的地理 API。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一
composer require --prefer-dist ovidiupop/yii2-nordicgeo "~1.0"
或将以下内容添加到您的 composer.json
文件的 require 部分中。
"ovidiupop/yii2-nordicgeo": "~1.0"
使用
安装扩展后,通过在 config.php 中配置它将 NordicGeo 组件集成到您的 Yii2 应用程序中。利用 nordic-geo.com 的 API 力量
'components' => [ 'nordicgeo' => [ 'class' => 'ovidiupop\nordicgeo\NordicGeo', 'apisBaseUrl' => 'http://nordic-geo.com/', 'queryBaseUrl' => 'http://nordic-geo.com/api/query?type=', ], ............ ], 'controllerMap' => [ 'nordicgeo'=> 'ovidiupop\nordicgeo\controllers\NordicGeoController', ............ ]
要使用表单中依赖数据的自动完成功能,您需要为每个字段添加特定的类。
这些是
'geography-select country' - 用于 select2 国家选择
'geography-select.region' - 用于 select2 地区选择
'geography-select place' 用于 select2 城市选择
'geography-select postalcode' - 用于 select2 邮编选择
<?php echo $form->field($model, 'country')->widget(Select2::classname(), [ 'data' => NordicGeoController::cmb('Countries', []), 'options' => [ 'prompt' => Yii::t('app', 'Select country'), 'class'=>'geography-select country' ], ]);?> <?php echo $form->field($model, 'region')->widget(Select2::classname(), [ 'data' => NordicGeoController::cmb('RegionsByCountry', ['country'=> $model->country]), 'options' => [ 'prompt' => Yii::t('app', 'Select region'), 'class'=>'geography-select region' ], ]);?> <?php echo $form->field($model, 'city')->widget(Select2::classname(), [ 'data' => NordicGeoController::cmb('PlacesByRegion', ['country'=>$model->country, 'region'=>$model->region]), 'options' => [ 'prompt' => Yii::t('app', 'Select city'), 'class'=>'geography-select place' ], ]);?> <?php echo $form->field($model, 'postalCode')->widget(Select2::classname(), [ 'data' => NordicGeoController::cmb('PostalCode', ['country'=>$model->country, 'region'=>$model->region, 'place'=>$model->city]), 'options' => [ 'prompt' => Yii::t('app', 'Select postal code'), 'class'=>'geography-select postalcode' ], ]);?>
在使用的模型中,如果要绕过当选择的国家是冰岛或法罗群岛时必须的“地区”字段的验证,假设模型使用“country”作为国家名称和“region”作为地区名称,请按以下方式修改规则
['region', 'required', 'when' => function ($model) { return !in_array($model->country, ['IS', 'FO']); }, 'whenClient' => "function (attribute, value) { return !(['IS', 'FO'].includes($('.geography-select.country').val())); }"],