使用Filament编辑数据,然后保存,突然报错:Livewire encountered corrupt data when trying to hydrate the [app.filament.resources.log-resource.pages.edit-log] component. Ensure that the [name, id, data] of the Livewire component wasn’t tampered with between requests.如下图:

问题原因:
这个问题的原因是Livewire组件的[name, id, data]被篡改导致了数据损坏。为了解决此问题,可以尝试以下几个步骤:
- 检查Livewire组件的名称、ID和数据是否正确且未被篡改。
- 确保使用的是最新版本的Livewire和Laravel框架,并且代码没有任何错误。
- 清除缓存并尝试重新加载Livewire组件。
这些步骤可能有助于解决此问题。
经过对比POST提交的数据,原来是长整形数字id在js中有精度丢失,导致请求之间id发生了变化。这是livewire的安全考虑,报错后阻止了继续修改数据。
解决办法:在laravel的模型中,指定模型的$casts属性为字符串类型,将长整型ID转化为字符串。代码如下:
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'id' => 'string',
];