2015-11-11 21 views
12

Voglio mostrare il vecchio input nel valore di input. Se non c'è vecchio ingresso, di spettacolo altra variabile:Laravel blade "vecchio input o variabile predefinita"?

value="{{ old('salary_' . $employee->id) or 'Default' }}" 

Ma quando non c'è vecchio ingresso, mi dà 1 invece del valore di default!

Penso che il problema abbia qualcosa a che fare con la concatenazione, ma non so come risolverlo !?

risposta

25

or è un operatore di confronto in PHP, in modo che il codice sta valutando a true, o 1. Ciò che si vuole è un ternario if dichiarazione.

Come accennato, or può essere utilizzato nella lama come abbreviazione per una dichiarazione ternaria se.

Ma si può (e si deve) solo passare il valore di default come secondo argomento della funzione, in questo modo:

value="{{ old('salary_' . $employee->id, 'Default') }}" 
+2

Ora ecco la cosa divertente; l'utilizzo di '{{$ value o $ default}}' è un modo a mano storta per fare un'istruzione ternaria in Blade ([Reference] (http://laravel.com/docs/5.1/blade#displaying-data)). Pertanto, non sono onesto che sia giusto. È, tuttavia, più chiaro! –

+0

Come nei documenti di Laravel: {{isset ($ name)? $ name: 'Default'}} abbreviazione {{$ name o 'Default'}} – ArtisanBay

+0

@ChrisForrence sei corretto! impari qualcosa ogni giorno ... il modo migliore per farlo è passare il valore predefinito come secondo argomento. – Adunahay

0

Come descritto nel documento laravel: "Se si sta visualizzando vecchio ingresso all'interno di un Modello di lama, è più comodo utilizzare il vecchio helper: ". Quindi, se è necessario aggiungere/modificare il modulo dati (quando è necessario utilizzare il modulo di modifica per aggiungere e modificare in modalità di modifica è necessario utilizzare i dati caricati dal modello (database)) per mostrare i valori dal modello (tramite controller) che è possibile utilizzare seguente:

name="some_value" value="{{ $some_value or old('some_value', $the_value) }}" 

dove è il nome di variabile "some_value_from_model" nell'array di visualizzazione. In questo caso dovrebbe essere dapprima $ un_valore verrà utilizzato per impostare il "valore" e, in caso contrario, tenterà di utilizzare il vecchio (valore dalla richiesta dal nome "valore_cuni") e se non è vecchio allora '' essere usato.

Grazie WoodyDRN per un commento.

+5

Ma se lo fai in questo modo $ some_value o old ('some_value') - quindi se l'utente inserisce qualcosa nei campi di input, e invia, e c'è stato un errore, allora tornerà di default a $ some_value ed eliminerà qualunque cosa essi ha scritto. old ('some_value', $ some_value) lo risolverebbe. – WoodyDRN