【问题标题】:Laravel Nova not showing userTimezone as documentedLaravel Nova 未按记录显示 userTimezone
【发布时间】:2020-08-19 07:45:22
【问题描述】:

我有个问题困扰了我一下午。

使用 Laravel Nova,在资源中使用 DateTime 类时:

DateTime::make('End', 'end_date')->required(),

它会自动显示在本地时区 (https://nova.laravel.com/docs/3.0/resources/date-fields.html)。但是,当我阅读文档时,它说要在服务提供商的引导方法中设置 userTimezone,以定义资源的时区:

Nova::userTimezone(function (Request $request) {
    // app.timezone = 'UTC'
    return 'Europe/Warsaw';
});

我已经这样做了,但它仍然将所有资源上的 nova 时区显示为本地时区,而不是指定的时区。

注意事项:

缓存清除:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

重新加载 Nova 并重建页面。

那么我的问题是,如何让 Nova DateTime 资源都在指定的时区?

【问题讨论】:

    标签: php laravel datetime laravel-nova


    【解决方案1】:

    您应该在应用程序的NovaServiceProviderboot 方法中调用此Nova::userTimezone

    use Laravel\Nova\Nova;
    use Illuminate\Http\Request;
    
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();
    
        Nova::userTimezone(function (Request $request) {
            return $request->user()->timezone;
        });
    }
    

    【讨论】:

    • 这正是我所做的......但它不起作用。它仍然只是返回用户时区,而不是根据我的代码示例指定的时区
    • 您在NovaServiceProvider 中调用use Laravel\Nova\Nova; 吗?
    • 是的。我有。我使用的是 Nova 自带的标准 NovaServiceProvider.php
    • NovaServiceProvider 中检查dd($request->user()->timezone); 并显示结果
    • 如果我 dd('something') 在 Nova::userTimezone 块之前,我可以看到它.. 如果我把 dd('something') 放在我可以看到它之后.. 但如果我dd('anything') 在该块内,该站点的行为正常,并且没有任何内容输出到屏幕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2018-10-02
    相关资源
    最近更新 更多