亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Livewire 在嘗試水合......組件時遇到損壞的數據

Livewire 在嘗試水合......組件時遇到損壞的數據

PHP
墨色風雨 2024-01-19 15:25:19
我收到以下錯誤并且有點迷失:Livewire 在嘗試水合……成分時遇到了損壞的數據。確保 Livewire 組件的 [name, id, data] 在請求之間未被篡改情況如下:Livewire 2.x,Laravel 7.x,組件控制器從3個MySQL存儲過程中獲取數據并進行處理。Component Blade 是一個帶有 foreach 循環的非?;镜牡镀?。我正在使用wire:init 功能,以便組件不會阻止頁面加載。它包含一個定制的分頁。當切換到第二頁數據時,就會出現這個錯誤。在 Livewire 1.x 上它沒有出錯。有誰知道如何解決這個問題?這個錯誤本身對我來說并沒有多大意義。需要任何額外信息嗎?預先感謝您,感謝您的幫助!
查看完整描述

7 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

就我而言,解決方案是保護公共財產并將其手動傳遞給刀片,因此它被排除在 Livewire 的自動處理之外。



查看完整回答
反對 回復 2024-01-19
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

要解決此問題,請打開vendor/livewire/livewire/src/ComponentChecksumManager.php 文件并var_dump($stringForHashing);在第19 行return 語句之前添加。然后,您可以看到正在散列的數據,并將其與之前的散列數據進行比較,以找出差異。

完成此操作后,我能夠識別 javascript 重新排列的數字鍵并提出適當的修復方法。

需要注意的一件事是,某些 json 格式化程序也會對數字鍵重新排序,因此最好在不格式化或手動格式化的情況下比較 json。

編輯:使用 var_dump 可能會干擾某些頁面的功能,因此將數據寫入文件可能是更好的選擇:

file_put_contents('/path/to/log.txt', $stringForHashing . "\n\n", FILE_APPEND);


查看完整回答
反對 回復 2024-01-19
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

無論如何,我們的問題是一個非常大的整數,大于 javascript 通過 Number.MAX_SAFE_INTEGER 可以處理的整數。

我們在這里填寫了錯誤報告:https://github.com/livewire/livewire/discussions/4788 (livewire 2.10.4)。

因此,當使用太大的整數時,沒有解決錯誤本身的方法。如果您想將您的值視為真正的整數,那么您現在運氣不佳,但也許轉換為字符串可能適合您。(和/或在 php 端進行計算 - 使用受保護的屬性 - 如果在您的情況下可行)。

話雖這么說,我們問題的真正原因是 uuid 轉換為 int,因為我們沒有填充protected $keyType = 'string';Laravel 模型的 ( https://laravel.com/docs/9.x/eloquent#primary-keys )!


查看完整回答
反對 回復 2024-01-19
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

我運行以下命令然后它解決了

php artisan 優化


查看完整回答
反對 回復 2024-01-19
?
www說

TA貢獻1775條經驗 獲得超8個贊

除了上面其他人建議的之外,如果您有一個使用groupBy()可能是此問題原因的集合,也可能會發生這種情況,


要修復此問題,請protected $attribute在組件中使用,而不是public傳遞$attribute到組件視圖。


protected $attribute;


public function mount($attribute){

   $this->attribute = $attribute;

}


...........


public function render()

{

    return view('livewire.view-here',['attribute'=>$attribute]);

}


查看完整回答
反對 回復 2024-01-19
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

在我的例子中,Livewire 組件引用了一個具有自定義屬性的模型,該屬性是使用Carbon::now()

因此,每次組件嘗試水合時,該屬性都有不同的值,因此被“損壞”。


查看完整回答
反對 回復 2024-01-19
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

我這樣做了,它對我有用:

php artisan config:cache
php artisan config:clear


查看完整回答
反對 回復 2024-01-19
  • 7 回答
  • 0 關注
  • 280 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號