如何在 laravel nova 管理面板中定义时间字段
Posted
技术标签:
【中文标题】如何在 laravel nova 管理面板中定义时间字段【英文标题】:how to define time Field in laravel nova admin panel 【发布时间】:2020-01-01 17:40:57 【问题描述】:我的数据库中有时间列。我需要为此列定义字段。
这是我的迁移:
$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'),
];
我只需要时间而不是日期和时间
【问题讨论】:
【参考方案1】:令人印象深刻的是,Nova 不仅没有 Time 字段,而且不支持 DateTime 字段的仅时间用法。
另一方面,Nova 有很多第三方组件,可以通过 composer 轻松添加。我确实在Nova Packages 上寻找了一些,并找到了两个可行的选项:Laraning Time Field 和Michielfb Time Field,它们似乎相当不错并且是开源的。
尽管如此,它们在 GitHub 上的 star 相对较少,并且最新版本相当旧,对于如此简单的功能来说这不是什么大问题,但我宁愿使用原生功能,所以这就是我的实现方式:
Text::make('Duration')
->placeholder('##:##:##')
->rules('date_format:"H:i:s"')
->help('hh:mm:ss'),
所以基本上我使用了带有格式验证的文本字段。还添加了占位符和帮助属性,使其更直观。它运作良好!我将它与time
数据库字段一起使用。其他大学建议使用遮罩组件,但它也需要第三方组件,我没有找到好的选择。
【讨论】:
【参考方案2】:来自docs 您可以使用 format 方法自定义 DateTime 字段的显示格式。格式必须是Moment.js支持的格式:
DateTime::make('time_Enable')->format('H mm'),
DateTime::make('time_begin')->format('H mm'),
【讨论】:
以上是关于如何在 laravel nova 管理面板中定义时间字段的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 Laravel 中为 Nova 资源显式定义策略?