kevinorriss / clienttimezone
使用javascript获取客户端时区与UTC的分钟数偏移
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-24 22:02:22 UTC
README
使用javascript获取客户端时区与UTC的分钟数差异。
工作原理
如果客户端时区未存储在会话中,javascript将触发一个POST ajax请求,发送客户端当前时间与UTC时间的分钟数偏移。然后,这个偏移将被存储在会话中,并且用户的浏览器会重新加载当前页面。javascript将只做一次,或者直到一个新的会话开始。
安装
- 将ClientTimezone添加到composer.json文件中的
require
"kevinorriss\clienttimezone": "1.2.*"
- 将ClientTimezoneServiceProvider添加到app.php文件中
KevinOrriss\ClientTimezone\ClientTimezoneServiceProvider::class,
- 将ClientTimezone别名添加到app.php文件中
'ClientTimezone' => KevinOrriss\ClientTimezone\ClientTimezone::class,
- 运行
composer update
使用方法
为了使用此包,您需要设置您的应用程序,以便Ajax调用发送CSRF令牌。
- 将以下meta标签添加到您的main blade布局文件中
<meta name="csrf-token" content="{{ csrf_token() }}" />
- 使用jquery添加javascript ajax设置代码,您可以在
public/js/main.js
中创建脚本并将其添加到您的main布局中
$(document).ready(function()
{
$.ajaxSetup(
{
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
- 在您的main布局中添加以下行,在jQuery脚本标签之后
@include('clienttimezone::javascript')
示例
Carbon
ClientTimezone最好与Carbon一起使用,以显示用户的当前时间。
$carbon = Carbon::now();
$carbon->addMinutes(ClientTimezone::getOffset());
跳过
有时您可能不希望javascript检查客户端时区。一个例子是当客户端通过跟随URL验证他们的电子邮件地址来创建您应用程序的新会话时,此页显示一个闪存消息,但将在JavaScript重新加载页面之前短暂显示。页面重新加载后,闪存消息将已过期。
为了防止javascript检查客户端时区并在需要时重新加载页面,只需在返回视图之前在控制器中添加此行即可。
ClientTimezone::skip();
覆盖
您可以通过在.env文件中添加相同名称的值来覆盖ClientTimezone的任何常量值,例如
CLIENT_TIMEZONE_SESSION=myexample
CLIENT_TIMEZONE_POST=newurl
CLIENT_TIMEZONE_SKIP=skipkey
作者
- Kevin Orriss - 网站
还可以查看参与此项目的贡献者列表。
许可协议
此项目受MIT许可协议的许可 - 有关详细信息,请参阅LICENSE文件