deltasystems / laravel-timezone
为Laravel提供时区存储和检索
Requires
- php: >=7.4
- laravel/framework: 5.6.* || 5.7.* || 5.8.* || ^6 || ^7 || ^8 || ^9 || ^10 || ^11
- nesbot/carbon: ^1.0 || ^2.0
- torann/geoip: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12
This package is not auto-updated.
Last update: 2024-09-14 05:29:07 UTC
README
一种简单的方法,在您的应用程序中为用户设置时区,然后以他们所在的本地时区显示日期和时间。
它如何工作
此包监听\Illuminate\Auth\Events\Login
事件,然后自动在您的user
模型(存储在数据库中)上设置timezone
。
此包使用了torann/geoip包,根据用户的IP地址查找用户的位置。该包还返回有关用户的货币和时区等信息。如果需要,您可以单独配置此包。
如何使用
您可以通过以下方式向您的用户显示他们的时区中的日期:
{{ Timezone::convertToLocal($post->created_at) }}
或者使用我们漂亮的blade指令
@displayDate($post->created_at)
安装
使用Composer引入此包
composer require jamesmills/laravel-timezone
发布数据库迁移
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
运行数据库迁移。这将向您的users
表添加一个timezone
列。
php artisan migrate
示例
向用户显示他们时区中的日期/时间
默认情况下将使用格式jS F Y g:i:a
,并且不会显示时区
{{ Timezone::convertToLocal($post->created_at) }} // 4th July 2018 3:32:am
如果您愿意,可以设置自定义格式并包含时区的一个美好版本
{{ Timezone::convertToLocal($post->created_at, 'Y-m-d g:i', true) }} // 2018-07-04 3:32 New York, America
使用blade指令
一步一步让您的生命更轻松
@displayDate($post->created_at) // 4th July 2018 3:32:am
并使用自定义格式
@displayDate($post->created_at, 'Y-m-d g:i', true) // 2018-07-04 3:32 New York, America
将用户输入保存到UTC数据库中
这将获取一个日期/时间,将其设置为用户的时区,然后作为UTC的Carbon实例返回。
$post = Post::create([ 'publish_at' => Timezone::convertFromLocal($request->get('publish_at')), 'description' => $request->input('description'), ]);
自定义配置
发布配置文件是可选的。
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=config
闪存消息
当时区已设置时,我们显示一个闪存消息。默认情况下,已配置为使用Laravel默认的闪存消息,以下是一些可选的集成。
laracasts/flash - 'flash' => 'laracasts'
mercuryseries/flashy - 'flash' => 'mercuryseries'
spatie/laravel-flash - 'flash' => 'spatie'
mckenziearts/laravel-notify - 'flash' => 'mckenziearts'
usernotnull/tall-toasts - 'flash' => 'tall-toasts'
要覆盖此配置,您只需更改配置文件config/timezone.php
中所需包的flash
属性。您可以通过设置'flash' => 'off'
来禁用闪存消息。
覆盖数据库中现有的时区
默认情况下,时区将在每次登录时被当前用户时区覆盖。此行为可以通过设置配置选项'overwrite' => false,
仅更新时区(如果它为空)来限制。
默认格式
默认情况下,日期格式将是jS F Y g:i:a
。要覆盖此配置,您只需更改配置文件config/timezone.php
中所需格式的format
属性。
查找数组
此查找数组配置允许通过任何键在任何Laravel request
辅助函数的任何属性中找到用户的远程地址。考虑到当键在属性内部找到时,该键将被使用。默认情况下,我们使用具有键 REMOTE_ADDR
的 server
属性。要覆盖此配置,只需更改配置文件 config/timezone.php
中所需的查找的 lookup
属性。
用户消息
您可以通过更改配置文件 config/timezone.php
中的 message
属性来配置设置时区时显示给用户的消息。
底层GeoIp包
如果您想自定义底层 torann/geoip
包,可以使用以下命令发布配置文件。
php artisan vendor:publish --provider="Torann\GeoIP\GeoIPServiceProvider" --tag=config
更新日志
有关最近更改的更多信息,请参阅 更新日志。
贡献
有关详细信息,请参阅 贡献。
许可协议
此软件包是100%免费和开源的,受MIT许可证的约束。您可以按需使用。
此软件包是 Treeware。如果您在生产环境中使用它,我们要求您为世界买一棵树以感谢我们的工作。通过为Treeware森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。
问题
如果您收到类似于 此缓存存储不支持标记
的消息,这是因为 torann/geoip
包需要支持标记的缓存驱动程序,并且您可能已将应用程序设置为使用 file
缓存驱动程序。您可以发布 torann/geoip
包的配置文件 并将 'cache_tags' => null,
设置为解决此问题。在此处了解更多关于此问题的信息。