本文 轉載自:http://blog.hsin.tw/2015/laravel-5-note09-form-requests-and-controller-validation/ php
文章解答了個人困惑很是感謝原做者 我把原來的繁體字 改爲了 簡體laravel
在後端做表單驗證 有兩種方法
第 1 種是使用 artisan 創建一個 request class 做驗證 (手冊裏寫的返回到Session 中 我不是很是理解 這篇文章解決勒沃的困惑)
第 2 種是直接在 controller 的 method 裏面做驗證後端
首先是第 1 種方式
首先使用 artisan 創建 request app
php artisan make:request CreateArticleRequest
這條命令會建立這個文件ui
app/Http/Requests/CreateArticleRequest.phpthis
class CreateArticleRequest extends Request { //驗證用戶權限 true 爲有權限 有興趣的能夠改爲false試試 public function authorize() { return true; } // 這個地方填寫表單驗證規則 public function rules() { return [ 'title' => 'required|min:3', 'body' => 'required', 'published_at' => 'required|date' ]; } }
若是有不符合規則的字段
他會輸出 error 並回到原表單頁
因此 view 這邊要再加上顯示 errorspa
resources/views/articles/create.blade.phpcode
<!-- 這邊省略了前一節講的表單部份 --> <!-- 加上顯示 error 可再依照需求做更動 --> @if ($errors->any()) <ul class="alert alert-danger"> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif
第二種方法 直接在 controller 裏作驗證orm
// 這行要加上 use Illuminate\Http\Request; class ArticlesController extends Controller { public function store(Request $request) { // 驗證條件的寫法跟前面的同樣 有錯誤同樣會導回原表單頁並顯示錯誤 $this->validate($request, ['title'=>'required']); Article::create($request->all()); return redirect('articles'); } }