spekulatius/silverstripe-timezones

提供时区数据以及为 SilverStripe 预置的下拉选择字段

1.0.1 2020-08-03 09:16 UTC

This package is auto-updated.

Last update: 2024-09-06 21:10:26 UTC


README

Build Status Latest Stable Version Latest Unstable Version Scrutinizer Code Quality Total Downloads License

提供可重复使用的全球时区模型和数据。此外,还包括用于时区选择的下拉字段。

需求

  • 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. 帮助您将项目想法变为现实。

bring your own ideas