Laravel Livewire 线:模型绑定时间属性到输入类型=“时间”

时间:2021-04-14 03:51:29

标签: laravel casting datetime-format laravel-livewire

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

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

将时间属性转换为 H:i

在模型中,我将时间属性(在数据库中它具有时间数据类型,并且可以像往常一样使用 Carbon 可用的任何选项将其插入到刀片模板中)到日期时间,格式为 {{ 1}} 是 24 小时制,根据 H:i 通常需要的值带前导零。 [0]

模型的 <input type="time"> 字段如下所示:

$casts

该视图具有此 protected $casts = [ 'time' => 'datetime:H:i', ]; 字段:

input

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

我也尝试过将格式设置为 <input type="time" wire:model="item.time" /> H:i:sH-iH-i-sHi,但它们都不起作用。

1 个答案:

答案 0 :(得分:2)

哎呀!似乎我只是忘记为 Livewire 中的时间属性添加验证。通过添加规则:

public Item $item;

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

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

我怀疑一般来说,只要属性被转换为正确的值,任何带有值的输入都可以被绑定。