2012-09-14 8 views
9

In laravel per mostrare tutti i messaggi di errore in una volta io uso il seguente codice nella visualizzazioneVerificare se un messaggio di errore esiste e mostrare tutti in laravel

<?php 
$something = $errors->all(); 
if(!empty($something)): 
?> 

<div class = "alert alert-error">      
    @foreach ($errors->all('<p>:message</p>') as $input_error) 
    {{ $input_error }} 
    @endforeach 
</div> 

<?php endif; ?> 

Ma quando voglio usare $errors->all() invece di $something in se la condizione è che mostra un errore

Impossibile utilizzare il metodo valore di ritorno nel contesto scrittura

al anche se il codice sopra funziona bene, penso che ci potrebbero essere dei modi migliori per verificare se esiste un messaggio di errore e se lo fa lo visualizzerà.

risposta

15

Sì, perché non è possibile utilizzare alcun metodo come parametro di funzione vuoto. Da documenti php:

vuoto() controlla solo le variabili come qualsiasi altra cosa comporterà un errore di parsing . In altre parole, il seguente non funzionerà: vuoto (ritaglio ($ nome)). Invece, usa trim ($ name) == false.

Che classe è $ errori? Se si tratta di una classe è possibile implementare tale metodo come 'isEmpty()' e quindi utilizzare in if:

if ($errors->isEmpty()) { ... 
+0

Grazie !! Non ero conscio di ciò! –

11

Nel mio controller Io uso il seguente codice per passare gli errori di convalida al mio punto di vista:

return Redirect::to('page') 
    ->withErrors($validator); 

Poi, a mio avviso, è possibile utilizzare il seguente codice per verificare se esistono errori:

@if($errors->any()) 
<div id="error-box"> 
    <!-- Display errors here --> 
</div> 
@endif 

È anche possibile utilizzare if($errors->all()).

Dal Laravel (v4) docs:

Si noti che quando la validazione fallisce, si passa l'istanza Validator al reindirizzamento utilizzando il metodo withErrors. Questo metodo lampeggerà i messaggi di errore nella sessione in modo che siano disponibili alla successiva richiesta ... [A] n La variabile errori $ sarà sempre disponibile in tutte le visualizzazioni, ad ogni richiesta, consentendo di supponiamo che la variabile errori $ sia sempre definita e possa essere utilizzata in sicurezza.

+1

c'è un modo per chiamare $ errori nel controller, o devo trovarlo in Session? –

+0

L'unico modo per trovarlo è come questo: '$ errors = Session :: get ('errors');' –

Problemi correlati