burnbright/silverstripe-regionaldata

提供国家和国家子区域的数据模型和数据。

安装: 346

依赖: 1

建议者: 0

安全: 0

星标: 5

关注者: 3

分支: 4

公开问题: 3

类型:silverstripe-module

0.3.1 2020-08-30 02:12 UTC

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查询以清理数据集
  • 存储地址格式。一些国家不需要所有地址字段,而其他国家则需要。
  • 名称翻译
  • 第三级邮政/邮编存储模型