burnbright / silverstripe-regionaldata
提供国家和国家子区域的数据模型和数据。
0.3.1
2020-08-30 02:12 UTC
Requires
- php: >=5.3.2
- silverstripe/framework: ~3.1
This package is auto-updated.
Last update: 2024-08-29 03:56:16 UTC
README
提供可重用的模型、数据和字段,用于对国家及其子区域进行分层地理区域分类。该模块应有助于缩小已知数据与访客输入的任意(可能无效)数据之间的差距。
特别关注遵循ISO 3166标准。
本模块不打算取代zend_locale。
安装
- 解压缩到您的silverstripe根目录/ regionaldata。
- 访问您的site.tld/dev/tasks/LoadRegionalData
现在您应该能够在您的site.tld/admin/regions中看到国家和子区域。
可能的用途
- 自动完成国家和州字段
- 下拉字段输入有效数据
- 与其他模型进行区域化连接
- 地址系统
JavaScript字段更新器
在具有国家和州字段的模板/表单中需要以下脚本:regionaldata/javascript/updater.jquery.js
如果您正在使用商店模块,一个包含此脚本的不错位置是Address
的扩展
function updateFormFields(FieldList $fields, $nameprefix = ""){
Requirements::javascript('regionaldata/javascript/updater.jquery.js');
}
提供的数据集
第二级子区域有不同的名称,例如:区域、区、教区、县。
大多数数据来自commondatahub.com。
在提供的数据集中,一些国家有多种子区域类型。总共有大约100种不同的子区域。在一种情况下(英国),有11种子区域类型。这导致了一个非常混乱的“地区/州”下拉菜单。您可能不想让每种类型都对用户可用,因此需要进行一些清理。
此查询将识别每种子区域类型
SELECT DISTINCT `Type`
FROM `CountrySubdivison` WHERE 1
ORDER BY `Type`
运行此查询将显示具有多种子区域类型的国家
SELECT *, COUNT(DISTINCT `Type`) as `Types`
FROM `CountrySubdivison`
GROUP BY `CountryID`
HAVING `Types` > 1
ORDER BY `Types` DESC
未来的TODO/想法
- 编写SQL查询以清理数据集
- 存储地址格式。一些国家不需要所有地址字段,而其他国家则需要。
- 名称翻译
- 第三级邮政/邮编存储模型