在 Web 应用中,用户提交的数据往往是不可预测的,因此一个非常常见的需求是对用户提交的表单请求进行验证,以确保用户输入的是我们所期望的数据格式。很多 Web 框架都对此功能专门提供了工具集,Laravel 也不例外,而且这个工具集异常丰富,基本上涵盖了目前主流的所有验证规则,即使是一些非常个性化的验证,也可以基于 Laravel 验证类的扩展功能来自定义验证规则,非常强大。接下来,我们就一起来看看如何在 Laravel 中对表单请求进行验证。
作为一个灵活的框架,Laravel 提供了多种方式对表单请求进行验证,你可以在控制器中通过 $this->validate()
方法验证用户请求,也可以通过单独的表单验证类定义验证规则,再将其注入到相应的控制器方法,我们由简入繁,先从 validate()
方法说起。
通过 validate 方法进行验证
在控制器中编写验证逻辑
通过 php artisan make:controller
生成的所有控制器默认都继承自基类 App\Http\Controllers\Controller
,因此所有这些控制器都使用了 ValidatesRequests
Trait,进而可以使用该 Trait 中提供的 validate()
方法对请求字段进行验证。
首先我们调整下 routes/web.php
中的表单提交路由,将其命名为 form.submit
:
Route::post('form', 'RequestController@form')->name('form.submit');
然后,修改 resources/views/request/form.blade.php
视图中的表单,新增两个字段,并将表单提交 URL 修改为上面定义的路由:
<form action="{
{ route('form.submit') }}" method="POST">
<div class="form-group">
<label>标题label>
<input type="text" name="title" class="form-control" placeholder="输入标题">
div>
<div class="form-group">
<label>URLlabel>
<input type="text" name="url" class="form-control" placeholder="输入URL">
div>
<fileupload-component>fileupload-component><