数据验证

更新时间: 2019-08-01 16:47

简介

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 中一样。

existsunique 规则

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

视图变量 $errors

Lumen 不支持 session,因此在 Laravel 中每个视图都可用的 $errors 视图变量在 Lumen 中是不可用的。如果验证失败,那么 $this->validate 辅助方法会抛出 Illuminate\Validation\ValidationException 异常,其中嵌入了包含所有相关错误消息的 JSON 响应。如果你并非只构建仅发送 JSON 响应的无状态 API,则应使用完整的 Laravel 框架。

查看更多 Laravel 中文文档 信息

Persuasive Technology

Persuasive Technology

B.J. Fogg / Morgan Kaufmann / 2002-12 / USD 39.95

Can computers change what you think and do? Can they motivate you to stop smoking, persuade you to buy insurance, or convince you to join the Army? "Yes, they can," says Dr. B.J. Fogg, directo......一起来看看 《Persuasive Technology》 这本书的介绍吧!

RGB转16进制工具

RGB转16进制工具

RGB HEX 互转工具

html转js在线工具

html转js在线工具

html转js在线工具