[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 Illuminate\Http\Request;

 

class ArticlesController extends Controller {

 

    public function store(Request $request)

    {

        // 验证条件的写法跟前面的一样 有错误一样会导回原表单页并显示错误

        $this->validate($request, ['title'=>'required']);        

 

        Article::create($request->all());

        return redirect('articles');

    }

 

}

 

你可能感兴趣的:(controller)