创建表单请求进行验证
创建表单请求验证
面对更复杂的情况,您可以创建一个「表单请求」来应对更复杂的验证逻辑。表单请求是一个包含了验证逻辑的自定义请求类。要创建一个表单请求类,请使用 make:request Artisan 命令:
php artisan make:request 请求类名
该命令生成的类将被置于 app/Http/Requests 目录中。如果这个目录不存在,在您运行 make:request 命令后将会创建这个目录。
开启
如果想要使用这个请求类来接收请求,需将 authorize 方法返回 true。如果 authorize 方法返回 false,则会自动返回一个包含 403 状态码的 HTTP 响应,也不会运行控制器的方法。
/**
* 判断用户是否有请求权限
*
* @return bool
*/
public function authorize()
{
return true;
}
让我们添加一些验证规则到 rules 方法中:
/**
* 获取应用于请求的规则
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|unique:posts|max:50',
'body' => 'required',
];
}
自定义错误消息
你可以通过重写表单请求的 messages 方法来自定义错误消息。此方法应返回属性 / 规则对及其对应错误消息的数组:
/**
* 获取已定义验证规则的错误消息
*
* @return array
*/
public function messages()
{
return [
'title.required' => '标题不能为空',
'title.max' => '标题不能超过50个字符',
'body.required' => '内容不能为空',
];
}
使用
所以,验证规则是如何运行的呢?你所需要做的就是在控制器方法中类型提示传入的请求。在调用控制器方法之前验证传入的表单请求,这意味着你不需要在控制器中写任何验证逻辑:
/**
* 存储传入的博客文章
*
* @param StoreBlogPost $request
* @return Response
*/
public function create(DingRequest $request)
{
// 获取通过验证的数据...
$all = $request->all();
}