我正在使用Laravel Livewire v2,我需要将表单日期输入绑定到后端Livewire组件中的模型Carbon属性,但是看来由于日期格式格式化是不可能的。
更准确地说:
2020-02-02
)->format('Y-m-d')
格式,因此发送了序列化日期对象2012-12-25T20:30:00.000000+04:00 MSK
我还发现,在Livewire v1中,可以使用键值数组或自定义转换方法来转换属性(link),但是在v2(link)中已将其删除;有一个使用hydrate
/ dehydrate
方法实现相同效果的示例,但是该示例涵盖了组件属性的情况,而不是像我这样的嵌套属性。
在将数据发送回客户端时,是否有一种方法可以投射模型日期道具或添加格式?
答案 0 :(得分:4)
从Livewire v2.3开始,现在可以直接绑定到模型属性(也称为wire:model
)进行模型转换。
您需要做的就是进入模型并提供日期强制转换,让我们以Post
模型为例:
class Post extends Model
{
protected $casts = [
'published_at' => 'date:Y-m-d'
];
}
这将使Livewire知道您的published_at
字段应以Y-m-d
的格式进行序列化,以便在客户端使用它,并将其转换回Carbon
({{ 1}})实例。
现在,您可以将其安全地附加到您的DateTime
字段:
<input>
当前,有一个待解决的PR旨在解决Livewire v2的问题。如果您去支持它,将会很有帮助:)