fullscreeninteractive/silverstripe-addressfinder

SilverStripe FormField for AddressFinder.co.nz

2.0.0 2023-09-08 03:01 UTC

This package is auto-updated.

Last update: 2024-09-08 05:07:35 UTC


README

Scrutinizer Code Quality Latest Stable Version

维护者联系方式

  • Will Rossiter <will (at) fullscreen (dot) io>

概述

此模块提供了一个自定义的 Silverstripe AddressFinderField,它实现了用于新西兰和澳大利亚地址和邮政编码查找的 JavaScript AddressFinder 小部件(1)。

入门指南

composer require fullscreeninteractive/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)',
    //...
];