2016-02-14 17 views
8

Questo è strano. Ho cercato continuamente su google per cercare una soluzione per il mio problema e la maggior parte delle soluzioni non funziona per me a causa di versioni diverse o richieste diverse: la gestione del controller.Laravel 5.2 non mostra errori di convalida del modulo

Quello che sta succedendo è questo.

Ho una forma:

<div class="form-group"> 
    Name * 
    {!! Form::text('name', '', ['class'=>'form-control', 'placeholder'=>'Required field']) !!} 
</div> 

e una richiesta:

class ContactFormRequest extends Request 
{ 

    public function authorize() 
    { 
     return true; 
    } 


    public function rules() 
    { 
     return [ 
      'name' => 'required|max:64', 
      'email' => 'required|email|max:128', 
      'message' => 'required|max:1024', 
     ]; 
    } 
} 

Sto lasciando il campo del nome vuoto in modo non riesce la convalida, e dovrebbe tornare alla pagina modulo di contatto e mostra gli errori:

@if(count($errors) > 0) 
     <div class="alert alert-danger"> 
      <ul> 
      @foreach($errors->all() as $error) 
       <li>{{ $error }}</li> 
      @endforeach 
      </ul> 
     </div> 
@endif 

Non mostra niente! Se io vardump la variabile $errors, ottengo questo:

object(Illuminate\Support\ViewErrorBag)[161] 
    protected 'bags' => 
    array (size=0) 
     empty 

Se riempio il campo modulo correttamente mi manda con successo alla pagina di successo e tutto funziona perfetto. Tutto ciò di cui ho bisogno ora è di far funzionare correttamente questo errore: S

Grazie in anticipo!

+0

Sono i controller delimitata ad un percorso fa parte del group__ __web middleware? In caso contrario, prova a collegarli, ma non riesco a vedere nulla di sbagliato nel tuo codice ... – Hammerbot

+0

Presumo che il metodo del tuo controller includa ContactFormRequest nell'elenco dei parametri? Si reindirizza nuovamente al modulo o si fa affidamento sull'azione predefinita del validatore? –

+0

Sì. Tutti i miei percorsi sono raggruppati con il "web" del middleware. E il mio metodo di controllo nel suo parametro ha ContactFormRequest come il tipo! –

risposta

3

Questo è un problema di rottura con l'aggiornamento 5.2. Quello che sta accadendo è che il middleware che è responsabile di rendere quella variabile di errori disponibile per tutte le viste non viene utilizzato perché è stato spostato dal middleware globale al gruppo middleware web.

Ci sono due modi per risolvere questo:

1-Nel file kernel.php, è possibile spostare il middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class indietro alla proprietà protected$middleware.

2-È possibile avvolgere tutti i percorsi Web con un gruppo di percorsi e applicare loro il middleware web.

Route::group(['middleware' => 'web'], function() { 
    // Place all your web routes here... 
}); 

Vai a questa
laravel-5-2-errors-not-appearing-in-blade

+0

Grazie signore per la risposta. Ho visto questa risposta in quel post, ma tutti i miei percorsi sono all'interno del gruppo WEB Middleware! Continua a non funzionare. –

+0

il middelware del tuo sito Web è vuoto e l'errore non viene visualizzato ???? – paranoid

+0

Ok ho trovato il problema. In realtà era molto stupido. La route POST era al di fuori del gruppo middleware web –