ovidiupop/yii2-nordicgeo

Yii2-NordicGeo 是一个强大的 Yii2 组件,旨在无缝集成北欧国家的地理 API。

安装: 6

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 1

公开问题: 0

类型:yii2-extension

dev-main 2024-01-02 20:19 UTC

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()));
            }"],