spekulatius / silverstripe-timezones
提供时区数据以及为 SilverStripe 预置的下拉选择字段
    1.0.1
    2020-08-03 09:16 UTC
Requires
- php: ^7.2
- silverstripe/framework: ^4.0
Requires (Dev)
- symfony/thanks: ^1.0
README
提供可重复使用的全球时区模型和数据。此外,还包括用于时区选择的下拉字段。
需求
- SilverStripe 框架 4.0
安装
安装时,您可以下载包,将其解压缩到项目目录中,并手动运行开发构建,或者在项目目录中运行以下命令
composer require spekulatius/silverstripe-timezones
./vendor/bin/sake dev/build
数据将在开发构建过程中自动填充。
提供的数据
提供的数据来自 PHP 内置函数 timezone_identifiers_list()。在数据保存到数据库之前,它将进行准备,以便可以使用。
下拉字段
如果您想使用下拉字段,只需将时区添加到您的数据库字段即可
<?php
use Spekulatius\TimeZones\Model\FieldType\TimeZone;
use Spekulatius\TimeZones\Forms\TimeZoneField;
class MyPage extends Page
{
    /**
     * @var array
     */
    private static $db = array(
        'UserTimeZone' => TimeZone::class
    );
    /**
     * @return FieldList
     */
    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        // ...
        $fields->addFieldToTab(
            'Root.Main',
            TimeZoneField::create(
                'TimeZone',
                'My time zone'
            )
        );
        return $fields;
    }
}
时区格式
您可以通过创建文件 mysite/_config/timezone.yml 并添加例如以下内容来更改下拉菜单中的默认时区格式
SilverStripe\Core\Injector\Injector:
  Spekulatius\TimeZones\Model\TimeZoneData:
    properties:
      format: '%Name (%Region)'
您可以在字符串中使用 'Name'、'Region' 和 'Identifier',它们将被适当替换。
* [Future ideas/development, issues](https://github.com/spekulat/silverstripe-timezones/issues),
* [Contributing](https://github.com/spekulat/silverstripe-timezones/blob/master/CONTRIBUTING.md),
* [License](https://github.com/spekulat/silverstripe-timezones/blob/master/license.md)
该项目由 Bring Your Own Ideas Ltd. 支持。Bring Your Own Ideas Ltd. 帮助您将项目想法变为现实。