数据验证
简介
Lumen 提供了数种不同的方法来验证传入应用程序的数据。默认情况下,Lumen 的基控制器类使用名为 ProvidesConvenienceMethods
的 trait,其提供了一种便捷的方法来使用各种强大的验证规则验证传入的 HTTP 请求。
一般来说,Lumen 中的数据验证与 Laravel 中的数据验证并无多大区别,因此你应该查阅 完整的 Laravel 数据验证文档 以熟悉其使用;不过,它们之间也存在少许重要的差异。
与 Laravel 的差异
表单请求
Lumen 不支持表单请求。 如果想使用表单请求,则应使用完整的 Laravel 框架。
$this->validate
方法
在 Lumen 中可用的 $this->validate
辅助方法将始终返回带有相关错误消息的 JSON 响应。而该方法的 Laravel 版本,如果请求不是 AJAX 请求,返回的则是重定向响应。由于 Lumen 是无状态的,且不支持会话,所以闪存错误信息在会话中是不可能的。如果想使用重定向及闪存错误数据,应该使用完整的 Laravel 框架。
与 Laravel 不同的是,Lumen 支持在 Route 闭包中访问 validate
方法:
use Illuminate\Http\Request;
$router->post('/user', function (Request $request) {
$this->validate($request, [
'name' => 'required',
'email' => 'required|email|unique:users'
]);
// 存储用户...
});
当然,你可以自由地使用 Validator::make
facade 方法手动创建验证器实例,就像在 Laravel 中一样。
exists
和 unique
规则
如果想要使用 exists
或 unique
验证规则,则应该在 bootstrap/app.php
文件中取消对 $app->withEloquent()
方法调用的注释。
视图变量 $errors
Lumen 不支持 session,因此在 Laravel 中每个视图都可用的 $errors
视图变量在 Lumen 中是不可用的。如果验证失败,那么 $this->validate
辅助方法会抛出 Illuminate\Validation\ValidationException
异常,其中嵌入了包含所有相关错误消息的 JSON 响应。如果你并非只构建仅发送 JSON 响应的无状态 API,则应使用完整的 Laravel 框架。
查看更多 Laravel 中文文档 信息