Livewire报错:Livewire encountered corrupt data when trying to hydrate the

1415
0

使用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]被篡改导致了数据损坏。为了解决此问题,可以尝试以下几个步骤:

  1. 检查Livewire组件的名称、ID和数据是否正确且未被篡改。
  2. 确保使用的是最新版本的Livewire和Laravel框架,并且代码没有任何错误。
  3. 清除缓存并尝试重新加载Livewire组件。

这些步骤可能有助于解决此问题。

经过对比POST提交的数据,原来是长整形数字id在js中有精度丢失,导致请求之间id发生了变化。这是livewire的安全考虑,报错后阻止了继续修改数据。

解决办法:在laravel的模型中,指定模型的$casts属性为字符串类型,将长整型ID转化为字符串。代码如下:

    /**
     * The attributes that should be cast.
     *
     * @var array<string, string>
     */
    protected $casts = [
        'id' => 'string',
    ];

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *