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:s
、H-i
、H-i-s
、Hi
、His
、none哪一个都有效。
糟糕!似乎我只是忘记了在 Livewire 中为时间属性添加验证。通过添加规则:
public Item $item;
protected $rules = [
'item.time' => 'required|date_format:H:i',
];
并使用 H:i
或 H:i:s
作为格式,属性已绑定。这可能也与我在此 Livewire 中验证我的字段的方式有关。
我怀疑只要将属性转换为正确的值,通常任何具有值的输入都可以绑定。
我了解如何将日期绑定到 <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:s
、H-i
、H-i-s
、Hi
、His
、none哪一个都有效。
糟糕!似乎我只是忘记了在 Livewire 中为时间属性添加验证。通过添加规则:
public Item $item;
protected $rules = [
'item.time' => 'required|date_format:H:i',
];
并使用 H:i
或 H:i:s
作为格式,属性已绑定。这可能也与我在此 Livewire 中验证我的字段的方式有关。
我怀疑只要将属性转换为正确的值,通常任何具有值的输入都可以绑定。