Laravel 5.2validation错误不出现在刀片上
我想在用户input错误的时候在View页面显示validation错误。 当用户input错误的时候,数据库中并没有保存任何东西。 但用户视图页面中没有错误信息。 如果有人发现错误,请帮助我。
这里是控制器:
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('Ym-d'); $user->completed_status = '0'; $user->course_id=$request->Input(['course_id']); $user->save(); return redirect('success'); }
这里是路线:
Route::group(['middleware' => 'web'], function () { Route::get('/', function () { return view('index'); })->name('main'); Route::post('/saveUser',[ 'uses' => 'AppController@saveUser', 'as'=>'saveUser', ]); });
这里是刀片视图页面:
@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
这里是错误消息块:
@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
如果您使用的是5.2.27或更高版本,请尝试删除web
中间件。 现在Laravel自动将web
中间件应用到routes.php中的所有路由中,如果您尝试手动添加,您可能会遇到错误。
5.2.27版本的app/Providers/RouteServiceProvider.php
现在将networking中间件添加到app/Providers/RouteServiceProvider.php
中的所有路由:
protected function mapWebRoutes(Router $router) { $router->group([ 'namespace' => $this->namespace, 'middleware' => 'web', ], function ($router) { require app_path('Http/routes.php'); }); }
在您的控制器中使用下面的行
使用Validator;
在您的控制器function中添加以下代码,在您的请求发送。
$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()); }
在你的浏览页面
@if ($errors->any()) <label for="fname" class="error">{{ $errors->first('fname') }}</label> @endif
用于显示个别字段明智的错误。