2016-04-22 21 views
15

Desidero mostrare l'errore di convalida nella pagina Visualizza mentre l'utente fornisce un input errato. È giusto che non stia salvando nulla nel database mentre un utente dà un input sbagliato. Ma non c'è nessun messaggio di errore nella pagina vista utente. Se qualcuno trova l'errore, per favore aiutami.Errore di convalida di Laravel 5.2 non visualizzato nel blade

Ecco il controllore:

public function saveUser(Request $request){ 
     $this->validate($request,[ 
      'name' => 'required|max:120', 
      'email' => 'required|email|unique:users', 
      'phone' => 'required|min:11|numeric', 
      'course_id'=>'required' 
      ]); 

     $user = new User(); 
     $user->name= $request->Input(['name']); 
     $user->email= $request->Input(['email']); 
     $user->phone= $request->Input(['phone']); 
     $user->date = date('Y-m-d'); 
     $user->completed_status = '0'; 
     $user->course_id=$request->Input(['course_id']); 
     $user->save(); 
     return redirect('success');   
    } 

Ecco il percorso:

Route::group(['middleware' => 'web'], function() { 

    Route::get('/', function() { 
     return view('index'); 
    })->name('main'); 

     Route::post('/saveUser',[ 
     'uses' => '[email protected]', 
     'as'=>'saveUser', 
     ]); 
    }); 

Ecco la pagina di visualizzazione della lama:

@extends('layouts.master') 
@section('title') 
Create User 
@endsection 
@section('content') 
@include('partials.message-block') 
     <div class="container" > 

      <h3> Student Register </h3> 

     {!! Form::open(array('route' => 'saveUser','class'=>'form-horizontal','method'=>'POST')) !!} 
     {!! Form::token(); !!} 
     {!! csrf_field() ; !!} 

     <div class="form-group"> 
      <label>Name</label> 
      <input type="text" name="name" class="form-control" required placeholder="Name"> 
     </div> 

     <div class="form-group"> 
      <label>Email</label> 
      <input type="email" name="email" class="form-control" required placeholder="email"> 
     </div> 

     <div class="form-group"> 
      <label>Phone Number</label>   
      <input type="text" name="phone" class="form-control" required placeholder="phone"> 
     </div> 

     <div class="form-group"> 
      <label for="">Class</label> 
      <select class="form-control input-sm" name="course_id" > 
      @foreach($input as $row) 
      <option value="{{$row->id}}">{{$row->name}}</option> 
      @endforeach 
      </select> 
     </div> 

     <button type="submit" class="btn btn-default">Submit</button> 
    {!! Form::close() !!} 
     </div> 

@endsection 

E qui è il blocco error-messaggio :

@if(count($errors) > 0) 
    <div class="row"> 
     <div class="col-md-4 col-md-offset-4 error"> 
      <ul> 
       @foreach($errors->all() as $error) 
        <li>{{$error}}</li> 
       @endforeach 
      </ul> 
     </div> 
    </div> 
@endif 
@if(Session::has('message')) 
<div class="row"> 
    <div class="col-md-4 col-md--offset-4 success"> 
     {{Session::get('message')}} 
    </div> 
</div> 

@endif 
+0

Provare a rimuovere il middleware 'web' se si utilizza 5.2.27 o versioni successive. –

+0

grazie per l'aiuto ora funziona! :) – User57

+0

Possibile duplicato di [ErrorBag è sempre vuoto in Laravel 5.2] (http://stackoverflow.com/questions/36377420/errorbag-is-always-empty-in-laravel-5-2) – patricus

risposta

21

Provare a rimuovere il middleware web se si utilizza 5.2.27 o versione successiva. Il fatto è che ora Laravel applica automaticamente il middleware web a tutti i percorsi all'interno di routes.php e se si sta tentando di aggiungerlo manualmente è possibile ottenere errori.

app/Providers/RouteServiceProvider.php della versione 5.2.27 aggiunge ora web middleware a tutte le rotte all'interno routes.php:

protected function mapWebRoutes(Router $router) 
{ 
    $router->group([ 
     'namespace' => $this->namespace, 'middleware' => 'web', 
    ], function ($router) { 
     require app_path('Http/routes.php'); 
    }); 
} 
+0

Puoi dare un'occhiata su questa domanda (http://stackoverflow.com/questions/38826362/laravel-associate-method-is-returning-empty-array-in-the-view) –

0

Usa sotto la linea nel controller

uso Validator;

Aggiungere il codice riportato di seguito nella funzione del controller in cui viene inviata la richiesta.

$validator = Validator::make($request->all(), [ 
    'fname'  => 'required|max:20|min:4', 
    'uemail' => 'required|email', 
    'message' => 'required', 
]);                                                        
if ($validator->fails()) { 
     $messages = $validator->messages(); 
     return Redirect::back()->withErrors($messages)->withInput($request->all()); 
}  

Secondo lei pagina

@if ($errors->any()) 
    <label for="fname" class="error">{{ $errors->first('fname') }}</label> 
@endif 

Per la visualizzazione campo individuale errore saggio.