Laravel Livewire wire:model 将时间属性绑定到输入类型="time"

Laravel Livewire wire:model binding time attributes to input type="time"

我了解如何将日期绑定到 <input type="date">(从 Laravel Livewire v2.3 开始),方法是将演员表 date:Y-m-d 添加到模型的属性。但是,我找不到任何关于是否可以通过强制转换为 datetime(通过一些适当的序列化)将模型的时间属性(即数据类型为 TIME 的属性)绑定到 <input type="time"> 的任何信息格式)。这可能吗?或者它还没有在 Livewire 中实现吗?

我自己尝试了几种不同的转换和序列化格式,none 到目前为止有效。

将时间属性转换为 H:i

在模型中,我将时间属性(在数据库中它具有时间数据类型,并且可以像往常一样使用 Carbon 可用的任何选项将其插入到 blade 模板中)到日期时间,格式为 H:i,即 24 小时制,前导零按照 <input type="time"> 通常要求的值。 [0]

模型的 $casts 字段如下所示:

protected $casts = [
  'time' => 'datetime:H:i',
];

视图有这个 input 字段:

<input type="time" wire:model="item.time" />

这不起作用(输入保持空白)。

我也尝试过将格式设置为 H:i:sH-iH-i-sHiHis、none哪一个都有效。

糟糕!似乎我只是忘记了在 Livewire 中为时间属性添加验证。通过添加规则:

public Item $item;

protected $rules = [
    'item.time' => 'required|date_format:H:i',
];

并使用 H:iH:i:s 作为格式,属性已绑定。这可能也与我在此 Livewire 中验证我的字段的方式有关。

我怀疑只要将属性转换为正确的值,通常任何具有值的输入都可以绑定。