fud*_*udo 3 casting date-formatting laravel laravel-livewire
我正在使用 Laravel Livewire v2,我需要将表单日期输入绑定到后端 Livewire 组件中的模型 Carbon 属性,但似乎不可能进行到期日期格式化。
更准确地说:
2020-02-02)->format('Y-m-d')对 Carbon 对象格式化,因此发送了一个序列化的日期对象2012-12-25T20:30:00.000000+04:00 MSK我还发现在 Livewire v1 中可以使用键值数组或自定义转换方法转换属性(链接),但这在 v2(链接)中已被删除;有一个例子hydrate/dehydrate方法实现相同效果的示例,但该示例涵盖了组件属性的情况,而不是像我这样的嵌套属性。
有没有办法在将数据发送回客户端时投射模型日期道具或添加格式?
Jor*_*lez 10
从 Livewire v2.3 开始,模型转换现在可以在直接绑定到模型属性(也称为wire:model)时起作用。
您需要做的就是转到您的模型并提供您的日期转换,让我们以Post模型为例:
class Post extends Model
{
protected $casts = [
'published_at' => 'date:Y-m-d'
];
}
Run Code Online (Sandbox Code Playgroud)
这将使 Livewire 知道您的published_at字段应该以格式序列化以在Y-m-d客户端使用它,并在更新时将其转换回Carbon( DateTime) 实例。
现在,您可以安全地将其附加到您的<input>领域:
<input type="date" wire:model="published_at" />
Run Code Online (Sandbox Code Playgroud)
目前,有一个悬而未决的 PR 旨在为 Livewire v2 解决这个问题。如果你去支持它会很有帮助:)
https://github.com/livewire/livewire/pull/1665
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |