2013-11-03 77 views
9

我最近發現我的問題是什麼導致我的表單錯誤。Laravel foreach輸入全部更新失敗,因爲表單令牌

我創建了一個表單提交和循環throuh他們

public function update() 
    { 

     $input = Input::all(); 

     foreach ($input as $key => $value) { 

      $update = Setting::find($key); 
      $update->value = $value; 
      $update->save(); 
     } 

     return Redirect::back(); 
    } 

問題是我得到以下錯誤

Creating default object from empty value 

因爲令牌包含在表單提交什麼Laravel全自動渲染到表格

如果我停止使用Laravel窗體打開並使用html窗體標籤,它一切正常。

是否有任何方式繞過這與laravel窗體打開或我應該使用html窗體標籤?

回答

24

變化

$input = Input::all(); 

$input = Input::except('_token'); 
+0

太感謝你了 –

+1

是否有像laravel的方式'all',檢索沒有'_token'和'_method'所有需要的表單數據?或者我需要延長請求? – FreeLightman

1

確保您$update = Setting::find($key);返回一個有效的對象,因爲,這個錯誤應該當$update爲空或定義你想在你的代碼中使用此引發不和

$update->value = $value; 

此警告Creating default object from empty value時發生E_STRICT在系統中,但這不是真正的問題,相反,你沒有得到預期的結果,最有可能的是Setting::find($key)沒有得到你要求的東西,而是創建一個新的對象,檢查你的模型,並確保你在::find($key)中傳遞正確的值,關鍵應該是primary關鍵。

更新: 還記得,您使用

$input = Input::all(); 
foreach ($input as $key => $value) { ... } 

時,在這種情況下,$key將表單中使用您的input/field的名稱,它可能包含隱藏_token領域,但_token可能是不在數據庫中作爲field/column可用。所以,你可以嘗試讓一切除了_token

$input = Input::except('_token'); // get everything without _token 

得到的一切,而不_token場(但不知道這是否解決了問題或不)。

相關問題