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

时间:2023-03-08 17:26:06
[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');
} }