如何在laravel nova管理面板中定义时间字段

j2datikz  于 2023-03-04  发布在  其他
关注(0)|答案(4)|浏览(105)

我有时间列在我的数据库中。我需要为这个列定义字段。
这是我的迁徙

$table->date('date');
            $table->time('time_begin');
            $table->time('time_Enable');

这是我的资源:

public function fields(Request $request)
    {
        return [

            datetime::make('time_Enable'),
            datetime::make('time_begin'),

        ];
    }

我只需要时间而不是日期和时间

14ifxucb

14ifxucb1#

令人印象深刻的是,Nova不仅没有Time字段,而且也不支持DateTime字段仅用于时间。
另一方面,Nova有大量的第三方组件,可以通过Composer轻松添加。我确实在X1 E0 F1 X上找了一些,发现了两个可行的选择:Laraning Time FieldMichielfb Time Field,它们看起来很不错,而且是开源的。
尽管如此,他们在GitHub上的星数相对较少,而且是一个相当旧的最新版本,这对于这样一个简单的功能来说不是什么大问题,但我宁愿使用一个原生的,所以下面是我如何实现它的:

Text::make('Duration')
    ->placeholder('##:##:##')
    ->rules('date_format:"H:i:s"')
    ->help('hh:mm:ss'),

所以基本上我使用了文本字段的格式验证。还添加了占位符和帮助属性,使它更直观一点。它工作得很好!我用它与一个time数据库字段。其他大学建议使用一个屏蔽组件,但它也需要一个第三方组件,我没有找到一个好的选择。

xkftehaa

xkftehaa2#

从文件上看
您可以使用format方法自定义DateTime字段的显示格式。该格式必须是Moment.js支持的格式:

DateTime::make('time_Enable')->format('H mm'),
DateTime::make('time_begin')->format('H mm'),
mspsb9vt

mspsb9vt3#

您可以将extraAttributes选项与type密钥一起使用:

Text::make('time_begin')->withMeta(['extraAttributes' => ['type' => 'time']])
xjreopfe

xjreopfe4#

为了在nova 4中处理时间问题,我做了下面的工作,目前效果很好。

DateTime::make('time_to')->displayUsing(function ($value) {
    return $value->format('H:i');
})->exceptOnForms(),

Text::make('time_to')->resolveUsing(function ($date) {
    $timestamp = new \DateTime($date);
    return $timestamp->format('H:i');
})->rules('date_format:"H:i"')->withMeta(['extraAttributes' => ['type' => 'time']])->onlyOnForms(),

相关问题