Laravel Livewire绑定模型碳属性

Laravel Livewire绑定模型碳属性,laravel,casting,date-formatting,laravel-livewire,Laravel,Casting,Date Formatting,Laravel Livewire,我使用的是Laravel Livewire v2,我需要将表单日期输入绑定到后端Livewire组件中的模型碳属性,但似乎无法设置到期日期格式 更准确地说: 选择日期时,表单日期输入选择器livewire将进行api调用,发送正确的日期(例如:2020-02-02) Livewire组件正确接收字符串值并将其传递给模型 模型将字符串强制转换为碳对象,并将其指定给其可填充属性 Livewire组件尝试将数据发送回客户端,但它不会对Carbon对象执行->格式(“Y-m-d”)格式,因此会发送序列

我使用的是Laravel Livewire v2,我需要将表单日期输入绑定到后端Livewire组件中的模型碳属性,但似乎无法设置到期日期格式

更准确地说:

  • 选择日期时,表单日期输入选择器livewire将进行api调用,发送正确的日期(例如:
    2020-02-02
  • Livewire组件正确接收字符串值并将其传递给模型
  • 模型将字符串强制转换为碳对象,并将其指定给其可填充属性
  • Livewire组件尝试将数据发送回客户端,但它不会对Carbon对象执行
    ->格式(“Y-m-d”)
    格式,因此会发送序列化日期对象
  • 当对象未序列化时,前置接收,例如
    2012-12-25T20:30:00.000000+04:00 MSK
  • 日期输入中断
我还发现,在Livewire v1中,可以使用键值数组或自定义转换方法转换属性(),但在v2()中已经删除了这一点;有一个示例使用了
水合物
/
脱水
方法来实现相同的效果,但该示例涵盖了组件属性的情况,而不是像我这样的嵌套属性

在将数据发送回客户机时,是否有方法转换模型日期道具或添加格式?

更新(2020-10-15) 自Livewire v2.3以来,模型转换现在可以在直接绑定到模型属性时工作(aka
wire:Model

你所需要做的就是找到你的模特并提供你的日期选择,让我们以一个
Post
模特为例:

类后扩展模型
{
受保护的$casts=[
'发布时间'=>'日期:Y-m-d'
];
}
这将让Livewire知道,您的
published_at
字段应以
Y-m-d
格式序列化,以便在客户端使用,并在更新时将其转换回
Carbon
DateTime
)实例

现在,您可以将其安全地附加到
字段:


旧答案 目前,有一个未决的PR旨在解决Livewire v2的问题。如果你去支持它,会有很大帮助:)