提问者:小点点

Laravel Livewire绑定模型碳属性


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

更准确地说:

  • 选择日期时表单日期输入选择器livewire进行api调用发送正确的日期(例如:2020-02-02
  • Livewire组件正确接收并将字符串值传递给模型
  • 模型将字符串转换为Carbon对象,并将其分配给其可填充属性
  • Livewire组件试图将数据发送回客户端,但它不执行-

我还发现,在Livewire v1中,可以使用键值数组或自定义转换方法转换属性(link),但在v2(link)中已经删除了这一点;有一个示例使用了水合物/脱水方法来实现相同的效果,但该示例涵盖了组件属性的情况,而不是像我这样的嵌套属性。

有没有一种方法来铸造模型日期道具或在发送数据回客户端时添加格式?


共1个答案

匿名用户

自从Livewire v2以来。3、模型转换现在可以在直接绑定到模型属性时工作(akawire:Model)。

所有你需要做的就是去你的模型并提供你的日期铸造,让我们以一个Post模型为例:

class Post extends Model
{
    protected $casts = [
        'published_at' => 'date:Y-m-d'
    ];
}

这将让Livewire知道,您的published_at字段应以Y-m-d格式序列化,以便在客户端使用,并在更新时将其转换回CarbonDateTime)实例。

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

<input type="date" wire:model="published_at" />

目前,有一个悬而未决的公关旨在为Livewire v2解决这个问题。如果你去支持它,会有很大帮助:)

https://github.com/livewire/livewire/pull/1665

相关问题