serendipity_hq / component-geo-builder
解析 Geonames 国家导出的数据,并将数据以机器可读的格式导出。
Requires
- php: ^7.4|^8.0
- ext-zip: *
- guzzlehttp/guzzle: ^7.0
- symfony/dom-crawler: ^4.4|^5.4|^6.0
- symfony/serializer: ^4.4|^5.4|^6.0
- thecodingmachine/safe: ^1.3
Requires (Dev)
- ext-ast: *
- bamarni/composer-bin-plugin: ^1.4
- phpstan/phpstan: 1.3.2
- phpstan/phpstan-phpunit: 1.0.0
- rector/rector: 0.12.11
- roave/security-advisories: dev-master
- symfony/console: ^4.4|^5.4|^6.0
- symfony/form: ^4.4|^5.4|^6.0
- symfony/var-dumper: ^4.4|^5.4|^6.0
- thecodingmachine/phpstan-safe-rule: 1.1.0
Suggests
- symfony/form: To use the builtin form types.
This package is auto-updated.
Last update: 2024-09-19 08:09:33 UTC
README
Serendipity HQ 地理构建器
解析 Geonames 国家导出的数据,并将数据以机器可读的格式导出。
它从 [Geonames 导出](https://www.geonames.org/export/zip/) 中下载国家信息。
已准备好集成到 Symfony 应用中。
当前状态
特性
- 下载国家导出数据
- 构建您在应用程序中使用的自定义国家列表
你喜欢这个库吗?
留下 ★
或者运行
composer global require symfony/thanks && composer thanks
来感谢您当前项目中使用的所有库,包括这个!
安装和配置
使用 Composer 安装 Component GeoBuilder
composer req serendipity_hq/component-geo-builder
此库遵循 http://semver.org/ 版本控制约定。
然而,直到版本 1,次要版本被视为主要版本。
因此,在次要版本之间(0.1 > 0.2 > 0.3)可能会出现公共 API 的中断。
组件本身是稳定的,可以在生产中使用,尽管它不太灵活。
查看问题了解我们打算实现的内容。
在 Symfony 应用程序中注册命令
打开文件 config/services.yaml
并添加 geobuilder
命令的类
# config/services.yaml services: ... SerendipityHQ\Component\GeoBuilder\Command\BuildCommand: $dumpDir: '%kernel.cache_dir%/geobuilder' # You also need to autowire the Guzzle CLient if you don't already have one GuzzleHttp\Client: ~ ...
构建所需的列表
要构建所需的列表,只需运行命令 geobuilder:build
并附加您想要构建列表的国家
$ bin/console geobuilder:build it de
默认情况下,命令使用层次结构读取器,并将创建大量 json
文件在您的 Symfony 应用程序 kernel.cache_dir/geobuilder
文件夹中。
您可以阅读完整的文档,了解更多关于读取器、保存文件夹等内容。
现在,让我们继续使用 GeoBuilder
。
下一步是创建一个表单,其中包含我们刚刚构建的数据。
创建表单
要使用表单类型,您需要将它们注册为服务,以便它们可以被 Symfony 正确初始化。
要注册它们,打开文件 config/services.yaml
并添加 HierarchyJsonType
# config/services.yaml services: ... SerendipityHQ\Component\GeoBuilder\Reader\HierarchyJsonReader: $dataFolderPath: '%kernel.cache_dir%/geobuilder' SerendipityHQ\Component\GeoBuilder\Bridge\Symfony\Form\Type\HierarchyJsonType: ~
然后,在您的表单中,您可以添加 HierarchyJsonType
class UserZoneType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array<string,mixed> $options * @suppress PhanUnusedPublicMethodParameter */ public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('geobuilder', HierarchyJsonType::class, ['country' => 'it']); } }
关于 countries.json
文件
此文件将仅包含您使用 bin/console geobuilder:build
命令构建的国家。
您可以使用 symfony/intl
组件的 Countries::getNames()
方法获取本地化国家的完整列表。
但是,Symfony 组件将返回所有国家,即使您没有构建它们。
你喜欢这个库吗?
留下 ★
或者运行
composer global require symfony/thanks && composer thanks
来感谢您当前项目中使用的所有库,包括这个!