2013-11-03 14 views
9

Recentemente ho riscontrato il problema che causa il mio errore di modulo.Laravel foreach input tutti gli aggiornamenti non riescono a causa del token modulo

creo un post forma e ciclo throuh li

public function update() 
    { 

     $input = Input::all(); 

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

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

     return Redirect::back(); 
    } 

Il problema è che ottengo il seguente errore

Creating default object from empty value 

Poiché il token è incluso nel post sotto forma ciò che laravel rende automaticly ad un modulo

se smetto di utilizzare il modulo di Laravel aperto e utilizzo il tag del modulo html, tutto funziona correttamente.

C'è un modo per aggirare questo con laravel modulo aperto o dovrei usare il tag modulo html?

risposta

24

cambiamento

$input = Input::all(); 

a

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

grazie mille –

+1

C'è un modo in laravel come 'all', che recupera tutti i dati dei moduli necessari senza' '_token' e _method'? O ho bisogno di estendere la richiesta? – FreeLightman

1

Assicurarsi che le $update = Setting::find($key); restituisce un oggetto valido, in quanto, tale errore deve essere attivato quando $update è null o non definito e si sta tentando di utilizzare questo nel codice

$update->value = $value; 

Questo avviso Creating default object from empty value si verifica quando E_STRICT è attivo nel sistema, ma questo non è il vero problema, invece, non ottieni il risultato desiderato, molto probabilmente Setting::find($key) non sta ottenendo la cosa che hai chiesto e creando invece un nuovo oggetto Setting, controlla il tuo modello e assicurati di stanno passando il giusto valore in ::find($key), la chiave dovrebbe essere primary chiave.

Aggiornamento: Ricordo anche, quando la vostra utilizzando

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

In questo caso, $key sarà il nome del input/field utilizzato nella forma e può contenere nascosto _token campo ma _token non è probabilmente disponibile nel database come field/column. Quindi, si può cercare di ottenere tutto tranne _token

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

per ottenere tutto senza _token campo (ma non so se questo risolve il problema o no).

Problemi correlati