今天我来分享 Laravel 中 HTTP 层关于请求、响应与表单验证的知识。前端
在控制器方法中使用 Illuminate\Http\Request
类型提示,
能够以依赖注入方式来获取当前 HTTP 请求的实例。laravel
将路由参数置于其余依赖以后能够传入路由参数。数据库
Request 提供了内置方法来便捷地作请求相关处理。json
path
方法返回请求路径信息。小程序
is
方法验证收到的请求路径与指定规则是否匹配。数组
url
返回不带有查询字符串的 URL。浏览器
fullUrl
返回包含查询字符串的完整 URL。微信
method
方法返回 HTTP 请求方式。cookie
isMethod
方法验证 HTTP 请求方式与指定规则是否匹配。网络
在 Laravel 的全局中间件中默认包含了 TrimStrings
和 ConvertEmptyStringsToNull
两个中间件。这些中间件被列在 App\Http\Kernel
类中。它们会自动处理全部请求中传入的字符串字段,好比将空的字符串字段转变成 null 值。想停用这些功能,则须要在 App\Http\Kernel
类的 $middleware
属性中移除这些中间件。
Laravel 支持从 Request 中获取常规数据、旧输入数据、cookies。
获取常规数据的方法有:
使用 all
方法以 数组 形式获取到全部输入数据。
input 方法获取指定输入值。
经过动态属性获取输入数据。
经过 json
方法获取 JSON 输入信息。
经过 only/except
方法获取部分输入数据。
经过 has
方法肯定是否有输入值。
对于旧数据,Laravel 容许你将本次的输入数据保留到下一次请求发送前。
这个特性在表单验证错误后从新填写表单至关有用。
获取上传文件的相关方法:
file
方法获取上传的文件。
hasFile
方法确认上传的文件是否存在。
isValid
方法验证上传的文件是否有效。
UploadedFile
这个类也包含了访问文件完整路径和扩展的方法。
path
方法获取路径。
extension
方法获取扩展名。
此外,store
方法支持上传文件储存到本地磁盘或者云存储上。
全部路由和控制器都会返回一个响应并返回给用户的浏览器。
Laravel 支持的 HTTP 响应类型包括字符串、数组、对象、附件头信息、附加 Cookie 等。
重定向响应是 Illuminate\Http\RedirectResponse
类的实例,
而且包含用户须要重定向至另外一个 URL 所需的头信息。
Laravel 支持:
经过全局 redirect
辅助函数实现重定向。
经过 back
辅助函数实现重定向至上级页面。
重定向至命名路由,并根据须要携带普通或 Eloquent 模型参数。
经过 action
方法传递控制器和行为名称做为参数来实现重定向至控制器行为。
重定向至一个新的 URL 的同时一般会 附加 Session 闪存数据。
使用全局辅助函数 response
能够轻松的生成其余类型的响应实例。
自定义能够在不少路由和控制器重复使用的响应,可使用 Response Facade 实现的 macro
方法。
Laravel 提供了多种不一样的验证方法来对应用程序传入的数据进行验证。默认状况下,Laravel 的基类控制器使用 ValidatesRequests Trait,它提供了方便的方法使用各类强大的验证规则来验证传入的 HTTP 请求数据。
重点在于在控制器的方法中,添加验证逻辑。
这部分与上面实例的差异在于为了知足更复杂的验证情境,咱们须要建立一个表单请求。表单请求是一个自定义的请求类,里面包含着验证逻辑。想要运行验证规则,在控制器方法中利用类型提示传入请求。
在自定义的表单请求类中能够实现:
经过 rules
方法添加验证规则。
经过 withValidator
方法在表单请求之后添加钩子。
经过 authorize
方法受权表单请求。
重写 AppHttpRequestsRequest 中的 formatErrors
方法来自定义错误格式。
重写 messages
方法自定义错误消息。
以前的内容是直接使用 ValidatesRequests Trait 的 validate
方法来实现表单验证。此外,还能够手动建立一个 validator
实例并经过 Validator::make
方法在 Facade 生成一个新的 validator
实例来实现表单验证。
调用 Validator
实例的 errors
方法,会获得一个 Illuminate\Support\MessageBag
的实例,能够对 MessageBag
进行各类处理,以知足具体的需求。
经常使用的错误信息相关方法:
经过 first
方法查看特定字段的第一个错误消息。
经过 get
方法查看特定字段的全部错误消息。
经过 all
方法查看全部字段的全部错误消息。
经过 has
方法判断特定字段是否含有错误消息。
自定义错误消息则主要经过传递三个参数到 Validator::make
方法来实现。
Laravel 内置了大量可用的验证规则。以下图:
具体用法能够查看文档:http://d.laravel-china.org/docs/5.4/validation#available-validation-rules
Laravel 还能够实现灵活的根据条件添加规则,如当字段存在时才进行验证,以及更多复杂的自定义验证规则。
对于请求中的数组参数,可使用型号 * 字符获取全部数组中的项。
除了 Laravel 内置的验证规则外,还能够根据须要自定义规则。在 服务提供者 中使用 Validator Facade 中的 extend 方法来注册自定义的验证规则。
到这篇为止,我完成了 Laravel 入门指南、核心概念、HTTP 层的路由、中间件、控制器、请求、响应、表单验证的学习和整理。这几个部分已经可让你实现简单的面向前端的接口。
接下来我将对数据库及 ORM 部分进行学习和整理。绝大多数应用的数据都存储在数据库中,服务端的功能围绕着数据库中存储的数据展开,从而构建了强大的应用。
对于知识的学习,整理是很是关键的一环,有助于加深理解。
对于 Laravel 的学习我将持续地以思惟导图的方式整理输出,并首发在微信公众号 up2048
上分享给须要的读者。
因为思惟导图在导出成图片的过程当中会变得模糊,为了方便读者,我也提供了思惟导图源文件的下载。读者可根据须要,关注微信公众号:up2048,并回复“脑图”来免费获取。
- EOF -