2013-11-03 7 views
9

Ich habe vor kurzem mein Problem gefunden, was meinen Formularfehler verursacht.Laravel foreach Eingabe alle Aktualisierung fehlgeschlagen wegen Formular-Token

ich eine Form Post und Schleife throuh sie

public function update() 
    { 

     $input = Input::all(); 

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

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

     return Redirect::back(); 
    } 

Das Problem ist, ich die folgende Fehlermeldung erhalten

Creating default object from empty value 

Da das Token in Form Post enthalten ist, was Laravel automatisch auf eine rendert form

wenn ich stoppe mit Laravel Formular öffnen und verwenden Sie die HTML-Formular-Tag alles funktioniert gut.

Gibt es eine Möglichkeit, dies zu umgehen mit Laravel Form offen oder sollte ich das HTML-Formular-Tag verwenden?

Antwort

24

Änderung

$input = Input::all(); 

zu

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

vielen Dank –

+1

Gibt es eine Möglichkeit in Laravel wie 'all', das ruft alle benötigten Formulardaten ohne' _token' und '_method'? Oder muss ich die Anfrage verlängern? – FreeLightman

1

Stellen Sie sicher, Ihre $update = Setting::find($key); kehrt ein gültiges Objekt, da, sollte dieser Fehler ausgelöst werden, wenn $update NULL oder nicht definiert ist und Sie versuchen, diese in Ihrem Code verwenden

$update->value = $value; 

Diese Warnung Creating default object from empty value tritt auf, wenn E_STRICT ist im System, aber das ist nicht das eigentliche Problem, stattdessen erhalten Sie nicht das gewünschte Ergebnis, höchstwahrscheinlich Setting::find($key) ist nicht bekommen, was Sie gefragt und erstellen ein neues Setting Objekt stattdessen, überprüfen Sie Ihr Modell und stellen Sie sicher Übergeben Sie den richtigen Wert in ::find($key), Schlüssel sollteseinSchlüssel.

Update: Denken Sie auch daran, wenn Ihr

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

In diesem Fall verwenden, $key wird der Name Ihres input/field in der Form verwendet werden und es _token Feld versteckt enthalten können, aber _token ist wahrscheinlich nicht in der Datenbank als field/column verfügbar. So können Sie versuchen, alles zu bekommen, außer _token

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

, um alles ohne _token Feld (aber nicht sicher, ob dies das Problem oder nicht löst).

Verwandte Themen