ujamii/ujamii-geocoder

连接http://geocoder-php.org/Geocoder与TYPO3 DataHandler API

安装: 10

依赖: 0

建议者: 0

安全性: 0

星星: 3

关注者: 3

分支: 2

开放问题: 2

类型:typo3-cms-extension

v1.0.0 2020-02-06 16:08 UTC

README

Packagist

连接http://geocoder-php.org/Geocoder与TYPO3 DataHandler API。通过此扩展,您可以在编辑器在TYPO3后端更改记录时轻松添加地理数据。您只需通过TCA配置您的实体“在地理编码器眼中的样子”即可。

安装

目前仅在TYPO3的composer模式下工作,所以

composer require ujamii/ujamii-geocoder

用法

只需将新的配置数组添加到您的TCA的ctrl部分。

..['ctrl']['geocoder'] = [
	'triggerFields' => ['street', 'zip', 'city'],
	'getAddressString' => 'Your\Namespace\Domain\Model\YourEntity->getAddressString'
];

并提供一个方法(例如,在实体或帮助类中),根据一个实体的数据库数据生成一个复合地址字符串(以下为示例)。

选项

以下选项是可能的

triggerFields(必需)

这些字段的更改将触发地理编码过程。

getAddressString(必需)

一个通过TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction调用的方法,该方法应返回一个完整的地址字符串。传递给此方法的第一个参数是合并后的数据数组(从数据库中未更改的实体数据 + 从后端表单中更改的值)。

示例

public function getAddressString($dataArray) {
	return $dataArray['location'];
}

locale(默认:de)

在地理编码器中使用的区域。

latField(默认:lat)

纬度值的目标字段名称。

lngField(默认:lng)

经度值的目标字段名称。

httpClientClass(默认:\Http\Adapter\Guzzle6\Client::class)

http客户端的类名,请参阅可能的包

providerClass(默认:\Geocoder\Provider\GoogleMaps\GoogleMaps::class)

提供者的类名,请参阅可能的包

providerParams

提供者的可选参数。(例如,Google Maps的API密钥)

geocoderClass(默认:\Geocoder\StatefulGeocoder::class)

地理编码器的类名。

示例

假设记录是数据库中的新闻记录,具有3个字段:位置、纬度和经度。字段位置包含类似Alexanderplatz, Berlin, Deutschland的内容,而纬度和经度是您希望编辑器更改位置时自动填充的字段。

将其添加到您的typo3conf/ext/your_extension/Configuration/TCA/Overrides/tx_news_domain_model_news.phptypo3conf/ext/your_extension/Configuration/TCA/tx_ext_domain_model_entity.php文件。

$GLOBALS['TCA']['tx_news_domain_model_news']['ctrl']['geocoder'] = [
	'triggerFields' => ['street', 'zip', 'city'],
	'getAddressString' => 'Your\Namespace\Domain\Model\YourEntity->getAddressString',
	'providerParams' => [
        0 => null,
        1 => null,
        2 => '<GMAPS_API_KEY>'
    ]
];

YourEntity中添加一个类似的方法

public function getAddressString($dataArray) {
	return sprintf('%s, %s %s', $dataArray['street'], $dataArray['zip'], $dataArray['city']);
}

作为命令或计划任务使用

此扩展还提供了填充纬度/经度字段的0值的命令。它从TCA中读取配置,遍历每个配置的表,搜索lat = 0 OR lng = 0。对于每行匹配项,执行地理编码过程,并将值更新到数据库中。该命令生成一些日志输出以跟踪已完成的工作。

由于它是一个默认的Symfony控制台命令,因此也可以通过计划任务调用。

vendor/bin/typo3 geocoder:fillmissingdata

待办事项

  • 发布到TER
  • 目前providerParams[0]始终填充httpClient,这可能不适用于所有提供者