介绍

Lumen提供了几种不同的方法来验证应用程序的传入数据。默认情况下,Lumen的基本控制器类使用ProvidesConvenienceMethods特征,该特征提供了一种方便的方法,可以使用各种功能强大的验证规则来验证传入的HTTP请求。
通常,Lumen中的验证与Laravel中的验证完全一样,因此您应该查阅完整的Laravel验证文档;但是,有一些重要的区别。

与Laravel的区别

表格要求

Lumen不支持表单请求。如果您想使用表单请求,则应使用完整的Laravel框架。

该方法$this->validate

Lumen中可用的帮助程序将始终返回带有相关错误消息的JSON响应。这与该方法的Laravel版本相反,如果请求不是AJAX请求,该方法将返回重定向响应。由于Lumen是无状态的,并且不支持会话,因此不可能向会话闪烁错误。如果要使用重定向和刷新的错误数据,则应使用完整的Laravel框架。$this->validate
与Laravel不同,Lumen validate从Route闭包内提供对方法的访问:

  1. use Illuminate\Http\Request;
  2. $router->post('/user', function (Request $request) {
  3. $this->validate($request, [
  4. 'name' => 'required',
  5. 'email' => 'required|email|unique:users'
  6. ]);
  7. // Store User...
  8. });

当然,您可以自由地使用Facade方法手动创建验证器实例,就像在Laravel中一样。Validator::make

existsunique规则

如果要使用existsunique验证规则,则应取消注释文件中的方法调用。$app->withEloquent()``bootstrap/app.php

$errors查看变量

Lumen不支持开箱即用的会话,因此$errorsLaravel中每个视图中可用的视图变量在Lumen中不可用。如果验证失败,则助手将抛出包含所有相关错误消息的嵌入式JSON响应。如果您不构建仅发送JSON响应的无状态API,则应使用完整的Laravel框架。$this->validate``Illuminate\Validation\ValidationException