meysampg / yii2-intldatebehavior
在找到ActiveRecord后的自动更改日期系统
Requires
This package is auto-updated.
Last update: 2021-07-15 14:20:15 UTC
README
🟥⚠️ 此包已被废弃。请选择其他包或从仓库分叉并告知我 p.g.meysam [at] gmail [dot] com 以在Packagist中引用您的包 ⚠️🟥
在找到ActiveRecord后的自动更改日期系统。 实际上它只是在表示上转换日期和时间系统,保持您的模型干净。因此,如果您需要一个转换器来更改时间并将其保存到数据库中,您可以使用 IntlDate 特性;)。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令:
composer require meysampg/yii2-intldatebehavior "*"
或者将以下内容添加到您的 composer.json
文件的 require 部分:
"meysampg/yii2-intldatebehavior": "*"
```json
使用
安装扩展后,只需在您的类中通过 use meysampg\behaviors\IntlDateBehavior
使用它,并将其作为行为附加到您的ActiveRecord模型
public function behaviors() { return [ IntlDateBehavior::className(), ]; }
此外,在您的模型中,您必须将 timestamp
字段的规则从 integer
更改为 safe
。
默认情况下,行为会尝试以您期望的方式显示 created_at
和 updated_at
字段,它们都具有 timestamp
类型。如果您想选择其他属性,可以将它们作为数组(例如 ['time1', 'time2', 'time3']
)分配给 timestampAttributes
属性。
配置
此行为的配置可以通过两种方式实现。第一种是使用Yii2配置数组,例如
public function behaviors() { return [ [ 'class' => IntlDateBehavior::className(), 'timestampAttributes' => ['create_time', 'update_time', 'another_time'], 'calendar' => 'persian', 'format' => 'php:d F Y، H:i:s', 'locale' => 'fa', 'tz' => 'Asia/Tehran' ], ]; }
这是一个本地配置。第二种方式是当您想将此行为用于具有相同配置的多个模型时,您应该将其作为行为添加到模型
public function behaviors() { return [ IntlDateBehavior::className(), ]; }
并将配置放入 params.php
文件中。以下是我的 params.php
示例:
<?php return [ // some params are here 'dateTimeFormat' => 'yyyy/MM/dd, HH:mm:ss', 'dateTimeCalendar' => 'persian', 'dateTimeLocale' => 'fa', 'dateTimeZone' => 'Asia/Tehran', ];
通过这种方式,您必须为日期时间格式分配一个值 'dateTimeFormat'
,为日历系统分配 'dateTimeCalendar'
,为显示日期时间信息的区域分配 'dateTimeLocale'
,以及为必须显示日期时间的区域分配 'dateTimeZone'
。
支持的日历
感谢 intldate 和 php 的 intl
扩展,此行为支持以下日历:
- 波斯
- 公历
- 日本
- 佛教
- 中国
- 印度
- 伊斯兰
- 希伯来
- 科普特
- 埃塞俄比亚
贡献
报告错误或进行修改并提交拉取请求!