Laravel 8 创建表单请求验证
面对更复杂的情况,您可以创建一个「表单请求」来应对更复杂的验证逻辑。表单请求是一个包含了验证逻辑的自定义请求类。要创建一个表单请求类,请使用 make:request
Artisan CLI 命令:
php artisan make:request StoreBlogPost
该命令生成的类将被置于 app/Http/Requests
目录中。如果这个目录不存在,在您运行 make:request
命令后将会创建这个目录。让我们添加一些验证规则到 rules
方法中:
/**
* 获取应用于请求的规则
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
技巧:您可以向
rules
方法传入所需的任何依赖项。它们将被 Laravel 服务容器 自动解析。
所以,验证规则是如何运行的呢?你所需要做的就是在控制器方法中类型提示传入的请求。在调用控制器方法之前验证传入的表单请求,这意味着你不需要在控制器中写任何验证逻辑:
/**
* 存储传入的博客文章
*
* @param StoreBlogPost $request
* @return Response
*/
public function store(StoreBlogPost $request)
{
// 传入的请求通过验证...
// 获取通过验证的数据...
$validated = $request->validated();
}
如果验证失败,就会生成一个让用户返回到先前的位置的重定向响应。这些错误也会被闪存到 session 中,以便这些错误都可以在页面中显示出来。如果传入的请求是 AJAX,会向用户返回具有 422 状态代码和验证错误信息的 JSON 数据的 HTTP 响应。