本文 转载自:http://blog.hsin.tw/2015/laravel-5-note09-form-requests-and-controller-validation/
文章解答了我的困惑非常感谢原作者 我把原来的繁体字 改成了 简体
在后端作表单验证 有两种方法
第 1 种是使用 artisan 建立一个 request class 作验证 (手册里写的返回到Session 中 我不是非常理解 这篇文章解决勒沃的困惑)
第 2 种是直接在 controller 的 method 里面作验证
首先是第 1 种方式
首先使用 artisan 建立 request
php artisan make:request CreateArticleRequest
这条命令会创建这个文件
app/Http/Requests/CreateArticleRequest.php
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 这边要再加上显示 error
resources/views/articles/create.blade.php
<!-- 这边省略了前一节讲的表单部份 --> <!-- 加上显示 error 可再依照需求作更动 --> @if ($errors->any()) <ul class="alert alert-danger"> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif
第二种方法 直接在 controller 里做验证
// 这行要加上 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'); } }