[Laravel 5] 表单验证 Form Requests and Controller Validation

本文 转载自: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 IlluminateHttpRequest;
 
class ArticlesController extends Controller {
 
    public function store(Request $request)
    {
        // 验证条件的写法跟前面的一样 有错误一样会导回原表单页并显示错误
        $this->validate($request, ['title'=>'required']);        
 
        Article::create($request->all());
        return redirect('articles');
    }
 
}
原文地址:https://www.cnblogs.com/hook-life/p/4398452.html