2016-04-22 9 views
15

Ich möchte Validierung anzeigen Fehler in der Seite anzeigen, während der Benutzer eine falsche Eingabe gibt. Es ist in Ordnung, dass es nichts in der Datenbank speichert, während ein Benutzer falsche Eingaben gibt. Aber es gibt keine Fehlermeldung in der Benutzeransichtsseite. Wenn jemand den Fehler findet, bitte hilf mir. HierLaravel 5.2 Validierungsfehler erscheint nicht im Blade

ist die Steuerung:

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');   
    } 

Hier ist die Route:

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

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

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

Hier ist die Klinge Ansicht Seite:

@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 

Und hier ist der Fehler-Nachrichtenblock :

@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

Versuchen Sie, 'web' Middleware zu entfernen, wenn Sie 5.2.27 oder höher verwenden. –

+0

danke für die Hilfe jetzt funktioniert es! :) – User57

+0

Mögliche Duplikate von [ErrorBag ist immer leer in Laravel 5.2] (http://stackoverflow.com/questions/36377420/errorbagis-ist-alpty-in-laravel-5-2) – patricus

Antwort

21

Versuchen Sie, die Middleware web zu entfernen, wenn Sie 5.2.27 oder höher verwenden. Die Sache ist jetzt Laravel wendet automatisch web Middleware auf alle Routen innerhalb routes.php an und wenn Sie versuchen, es manuell hinzuzufügen, können Sie Fehler erhalten.

app/Providers/RouteServiceProvider.php der 5.2.27-Version fügt nun Web-Middleware auf allen Strecken innerhalb routes.php:

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

Können Sie einen Blick darauf werfen zu dieser Frage (http://stackoverflow.com/questions/38826362/laravel-associate-method-is-returning-empty-array-in-the-view) –

0

Einsatz unter Leitung in Ihrem Controller

Verwendung Validator;

Fügen Sie den folgenden Code in Ihre Controller-Funktion ein, in der Ihre Anfrage gesendet wird.

$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()); 
}  

aus Ihrer Sicht Seite

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

Für die Anzeige einzelnen Feld wiesen Fehler.