本文 转载自: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');
} }