fullscreeninteractive / silverstripe-addressfinder
SilverStripe FormField for AddressFinder.co.nz
2.0.0
2023-09-08 03:01 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^9.6
README
维护者联系方式
- Will Rossiter <will (at) fullscreen (dot) io>
概述
此模块提供了一个自定义的 Silverstripe AddressFinderField
,它实现了用于新西兰和澳大利亚地址和邮政编码查找的 JavaScript AddressFinder 小部件(1)。
入门指南
composer require fullscreeninteractive/silverstripe-addressfinder
- 在 addressfinder.nz/plans/ 注册一个新西兰账户,或在 addressfinder.com.au/plans/ 注册一个澳大利亚计划
- 通过 Silverstripe 配置系统设置 AddressFinder 密钥
app/_config/addressfinder.yml
FullscreenInteractive\SilverStripe\AddressFinderField:
api_key: 123
或者,如果您更喜欢使用环境变量
app/_config/addressfinder.yml
FullscreenInteractive\SilverStripe\AddressFinderField:
api_key: '`ADDRESS_FINDER_KEY`'
然后添加一个 AddressFinderField
实例到您的表单字段中
use FullscreenInteractive\SilverStripe\AddressFinderField;
$fields->push(new AddressFinderField('Address'));
这将为您提供具有自动完成下拉菜单和用户手动输入地址(如果 API 不可访问)切换的单个文本框。
表单字段提供了自动保存到 DataObject 模型(如果已定义)的 saveInto 逻辑。模块将保存到数据库的字段(如果有的话)是
- 地址 单行表示形式,应为您字段的名称
- PostalLine1
- PostalLine2
- PostalLine3
- PostalLine4
- PostalLine5
- PostalLine6
- Suburb
- City
- Postcode
- Latitude
- Longitude
以下是一个示例模型,它将捕获 AddressFinder 的所有信息
<?php use SilverStripe\ORM\DataObject; class AddressObject extends DataObject { private static $db = [ 'Address' => 'Text', 'PostalLine1' => 'Varchar(200)', 'PostalLine2' => 'Varchar(200)', 'PostalLine3' => 'Varchar(200)', 'PostalLine4' => 'Varchar(200)', 'PostalLine5' => 'Varchar(200)', 'PostalLine6' => 'Varchar(200)', 'Suburb' => 'Varchar(200)', 'City' => 'Varchar(200)', 'Postcode' => 'Varchar(200)', 'Latitude' => 'Varchar(200)', 'Longitude' => 'Varchar(200)' ]; }
要为这些字段添加前缀,请在您的 AddressFinderField
实例上调用 setFieldPrefix($prefix)
。
AddressFinderField::create('HomeAddress') ->setFieldPrefix('Home') AddressFinderField::create('WorkAddress') ->setFieldPrefix('Work') // requires the following model private static $db = [ 'HomeAddress' => 'Text', 'HomeAddressPostalLine1' => 'Varchar(200)', 'HomeAddressPostalLine2' => 'Varchar(200)', 'HomeAddressPostalLine3' => 'Varchar(200)', 'HomeAddressPostalLine4' => 'Varchar(200)', 'HomeAddressPostalLine5' => 'Varchar(200)', 'HomeAddressPostalLine6' => 'Varchar(200)', 'HomeAddressSuburb' => 'Varchar(200)', 'HomeAddressCity' => 'Varchar(200)', 'HomeAddressPostcode' => 'Varchar(200)', 'HomeAddressLatitude' => 'Varchar(200)', 'HomeAddressLongitude' => 'Varchar(200)', 'WorkAddress' => 'Text', 'WorkAddressPostalLine1' => 'Varchar(200)', 'WorkAddressPostalLine2' => 'Varchar(200)', //... ];