當咱們提交表單時 一般會對提交過來的數據進行一些驗證、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 '驗證經過'; }