drmonkeyninja/cakephp-address

CakePHP地址格式化助手

安装数: 5,721

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 1

开放问题: 1

类型:cakephp-plugin

2.1.0 2017-12-19 15:41 UTC

This package is auto-updated.

Last update: 2024-09-07 15:28:52 UTC


README

License Build Status

此插件为CakePHP 2提供地址格式化的视图助手。

安装

可以使用Composer安装此插件:

composer require drmonkeyninja/cakephp-address

或者将插件复制到您的app/Plugin目录,并将插件目录重命名为'Address'。

然后,将以下行添加到您的bootstrap.php中,以加载插件。

CakePlugin::load('Address');

用法

AddressHelper::format(array $address, array $fields=null, array $options=array())

返回带有换行符的格式化地址:

$data['CustomerAddress'] = array(
        'house_name' => 'Winter Gardens',
        'house_number' => '90',
        'address_line_1' => 'Surrey Street',
        'city' => 'Sheffield',
        'county' => 'South Yorkshire',
        'postcode' => 'S1 2LH'
    );
echo $this->Address->format($data['CustomerAddress']);

输出:

<address>Winter Gardens<br />90 Surrey Street<br />Sheffield<br />South Yorkshire<br />S1 2LH</address>

您可以通过传递字段名称数组作为第二个参数来定义用于地址的字段名称:

$fields =array(
    'address_line_1',
    'city',
    'postcode'
);
echo $this->Address->format($data['CustomerAddress'], $fields);

输出:

<address>90 Surrey Street<br />Sheffield<br />S1 2LH</address>

您可以使用第三个参数中的tag选项更改包装标签,并设置其他属性,如class:

echo $this->Address->format($data['CustomerAddress'], $fields, array('tag' => 'div', 'class' => 'address'));

输出:

<div class="address">90 Surrey Street<br />Sheffield<br />S1 2LH</div>

字段名称支持Hash直接路径语法,因此您可以使用格式化器处理稍微复杂一点的地址数组。例如,我们可以这样处理关联的国家模型:

$data['CustomerAddress'] = array(
    'house_name' => 'Winter Gardens',
    'address_line_1' => '90 Surrey Street',
    'city' => 'Sheffield',
    'postcode' => 'S1 2LH',
    'Country' => array(
        'name' => 'United Kingdom'
    )
);
$fields = array(
    'house_name',
    'address_line_1',
    'city',
    'postcode',
    'Country.name'
);
echo $this->Address->format($data['CustomerAddress'], $fields);

输出:

<address>Winter Gardens<br />90 Surrey Street<br />Sheffield<br />S1 2LH<br />United Kingdom</address>

您可以通过传递tagseparator的值来更改输出标记。

echo $this->Address->format($data['CustomerAddress'], $fields, array('tag' => 'p', 'separator' => ', '));

输出:

<p>Winter Gardens, 90 Surrey Street, Sheffield, S1 2LH, United Kingdom</p>