nsu-soft / yii-dadata
Yii 2 框架的 DaData 模块
0.5.1
2024-02-27 03:09 UTC
Requires
- php: >=7.2
- hflabs/dadata: ^20.12
- psr/simple-cache: ^1.0.1
- yiisoft/yii2: ~2.0.38
README
安装
如果您没有Composer,可以通过访问getcomposer.org上的说明进行安装。
使用以下命令安装此库
composer require nsu-soft/yii-dadata
配置
将以下行添加到您的配置文件中
'modules' => [ 'dadata' => [ 'class' => 'nsusoft\dadata\Module', 'token' => 'enter-your-dadata-token', 'secret' => 'enter-your-dadata-secret', 'cachePriority' => [DbHandler::class], ], ],
了解更多关于 Yii2 中模块配置的信息。
迁移
如果您想将 DaData 的响应保存到本地数据库,请应用迁移
yii migrate --migrationPath=@vendor/nsu-soft/yii-dadata/src/migrations
用法
清理地址
<?php namespace app\forms; use app\models\City; use app\models\Region; use nsusoft\dadata\helpers\CleanHelper; use nsusoft\dadata\plugins\TimezoneConverter; use nsusoft\dadata\validators\AddressValidator; use yii\base\Model; class AddressForm extends Model { /** * @var string */ public $address; /** * @var City */ private $city; /** * @var Region */ private $region; /** * @inheritDoc */ public function rules(): array { return [ [['address'], 'string', 'max' => 255], [['address'], AddressValidator::class, 'maxPrecision' => AddressValidator::PRECISION_STREET, 'minPrecision' => AddressValidator::PRECISION_BUILDING], ]; } /** * @return bool */ private function saveRegion(): bool { $address = CleanHelper::address($this->address); $this->region = new Region(); $this->region->name = $address->region; $this->region->type = $address->regionType; $this->region->type_full = $address->regionTypeFull; $this->region->name_with_type = $address->regionWithType; $this->region->fias_id = $address->regionFiasId; $this->region->timezone = TimezoneConverter::toIana($address); return $this->region->save(); } /** * @return bool */ private function saveCity(): bool { $address = CleanHelper::address($this->address); $this->city = new City(); $this->city->name = $address->city; $this->city->type = $address->cityType; $this->city->type_full = $address->cityTypeFull; $this->city->name_with_type = $address->cityWithType; $this->city->fias_id = $address->cityFiasId; $this->city->region_id = $this->region->id; return $this->city->save(); } /** * @return bool */ public function save(): bool { if (!$this->validate()) { return false; } return $this->saveRegion() && $this->saveCity(); } }
建议地址
<?php namespace app\controllers; use nsusoft\dadata\helpers\SuggestHelper; use yii\web\Controller; class SuggestController extends Controller { /** * @param string $query * @return array */ public function actionAddress(string $query): array { $items = []; foreach (SuggestHelper::address($query) as $suggest) { $items[] = $suggest->value; } return $items; } }
更多用法示例,请参阅 src/helpers
和 src/validators
目录。