Lumen 6 中文文档 数据验证
简介
Lumen 提供数种不同的方式来验证你的应用程序传入的数据。默认情况下, Lumen 的基控制器使用 ProvidesConvenienceMethods
trait ,它提供一个便利且包含一系列强有力的验证规则的方法去验证传入的 HTTP 请求。
通常, Lumen 的数据验证运作起来就像 Laravel 的数据验证,因此你应该查询 完整 Laravel 数据验证文档 ;然而,此处有几个重要的不同点。
和 Laravel 的不同
表单请求
Lumen 不支持表单请求。如果你打算要使用表单请求,你应该使用完整 Laravel 框架。
$this->validate
方法
Lumen 里可用的 $this->validate
辅助方法总是会返回一个包含相关错误信息的 JSON 响应。这与该方法的 Laravel 版本有明显不同,后者在应对非 AJAX 请求时,会返回一个重定向响应。由于 Lumen 是无状态且不支持会话的,因此将错误闪存到会话是不可能的。如果你要使用重定向和闪存错误数据,你应该选择完整的 Laravel 框架。
和 Laravel 不同, Lumen 提供由 路由 闭包通往 validate
的方法:
use Illuminate\Http\Request;
$router->post('/user', function (Request $request) {
$this->validate($request, [
'name' => 'required',
'email' => 'required|email|unique:users'
]);
// 保存用户……
});
当然,你也可以自由使用 Validator::make
门面方法去手动创建验证器实例,就像你在 Laravel 里的那样。
exists
和 unique
规则
如果你打算要使用 exists
或 unique
验证规则,你应该在 bootstrap/app.php
文件取消 $app->withEloquent()
方法调用的注释。
$errors
视图变量
Lumen 不支持开箱即用的会话,因此在 Laravel 里每个视图都可用的 $errors
视图变量,在 Lumen 里是不可用的。 如果验证失败, $this->validate
辅助函数将抛出带有嵌入 JSON 响应(包含所有相关错误信息)的 Illuminate\Validation\ValidationException
。如果你不是在开发一个无状态且仅仅发送 JSON 响应的 API ,你应该使用完整 Laravel 框架。