当咱们提交表单时 一般会对提交过来的数据进行一些验证、Laravel在Controller类中使用了一个traint:ValidatesRequest。方便咱们在控制器中使用验证器。php
下面咱们就来看一个验证表单的例子。css
Route::resource('/post', 'PostController');
php artisan make:controller PostController
在 /views 中建立 /post/create.blade.php 文件,编写以下:html
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading"> 建立文章 </div> <div class="panel-body"> <form action="{{ url("/post") }}" method="POST" class="form-horizontal"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <div class="form-group"> <label class="col-md-4 control-label">标题</label> <div class="col-md-6"> <input type="text" class="form-control" name="title"> </div> </div> <div class="form-group"> <label class="col-md-4 control-label">内容</label> <div class="col-md-6"> <textarea rows="10" class="form-control" name="content"></textarea> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <button class="btn btn-primary" type="submit">Submit</button> </div> </div> </form> </div> </div> </div> </div> </div> </body> </html>
public function create() { return view('post.create'); }
咱们在store方法中验证表单提交过来的数据,语法是这样的:bootstrap
validate() 参数:数组
public function store(Request $request) { $this->validate($request, [ 'title' => 'required|min:3', 'content' => 'required|min:10', ]); echo '验证经过'; }
↑ 上面的例子若是验证经过 则显示"验证经过" 若是验证没有经过的话Laravel会自动跳转到表单提交页面 并把错误信息闪存到Session中,咱们能够修改create.balde.php文件 添加显示错误代码post
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading"> 建立文章 </div> <div class="panel-body"> @if (count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ url("/post") }}" method="POST" class="form-horizontal"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <div class="form-group"> <label class="col-md-4 control-label">标题</label> <div class="col-md-6"> <input type="text" class="form-control" name="title"> </div> </div> <div class="form-group"> <label class="col-md-4 control-label">内容</label> <div class="col-md-6"> <textarea rows="10" class="form-control" name="content"></textarea> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <button class="btn btn-primary" type="submit">Submit</button> </div> </div> </form> </div> </div> </div> </div> </div> </body> </html>
public function store(Request $request) { // $this->validate($request, [ // 'title' => 'required|min:3', // 'content' => 'required|min:10', // ]); $validator = Validator::make($request->all(), [ 'title' => 'required|min:3', 'content' => 'required|min:10', ]); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } echo '验证经过'; }