介绍
本篇文章给大家分享的是有关Laravel中怎么实现表单验证分层设计,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
安装
composer require 支w7/engine-validate
介绍
首先此验证器也是基于<代码>照亮/验证代码>的,关于它的详细说明可以直接查看它的文档,这里就不过多说明了。
使用
首先我们建立一个和控制器相对应的验证层
应用程序 ├──,Http │,,,├──,控制器 ││,,还以为,,,└──,UserController.php │,,,└──,验证 │,,,,,,,└──,UserValidate。php
验证器
验证器代码:
class UserValidate extends 验证{ ,,,protected rule 美元;=,( ,,,,,,,& # 39;用户# 39;,=祝辞,& # 39;要求|电子邮件,, ,,,,,,,& # 39;通过# 39;,=祝辞,& # 39;要求| alpha_num& # 39; ,,,); ,,,protected message 美元;=,( ,,,,,,,& # 39;user.required& # 39;,=祝辞,& # 39;账号不可为空& # 39;, ,,,,,,,& # 39;pass.required& # 39;,=祝辞,& # 39;密码不可为空& # 39;, ,,,); ,,,protected customAttributes 美元;=,( ,,,,,,& # 39;用户# 39;,=祝辞,& # 39;账号& # 39;, ,,,,,,& # 39;通过# 39;,=祝辞,& # 39;密码& # 39;, ,,,);}
控制器代码:
class UserController extends BaseController { ,,,use AuthorizesRequests,, DispatchesJobs,, ValidatesRequests; ,,,public function 登录(Request $请求) ,,,{ ,,,,,,,data 美元;=,UserValidate:使()→检查(请求→美元()); ,,,}}
这个时候,如果值不符合要求,会抛出一个<代码> ValidateException 代码>异常,我们可以选择手动捕获,也可以选择在异常捕获类里面做一个全局的处理:
,,,,public function 渲染(请求,美元,Throwable $ e) ,,,{ ,,,,,,,if (e 美元;instanceof ValidateException), { ,,,,,,,,,,,return 响应()→json ([ ,,,,,,,,,,,,,,,& # 39;代码# 39;,,,,=祝辞,1, ,,,,,,,,,,,,,,,& # 39;消息# 39;,=祝辞,e→美元getMessage () ,,,,,,,,,,,); ,,,,,,,} ,,,,,,,return 父:渲染($请求,,$ e); ,,,}
这样我们就不需要再控制器里面管理任何的验证异常了。
此时,控制器中的<代码> $ data> 代码一定是符合我们需求的数据,然后可以紧接着做对应的业务处理
验证场景
这个时候,如果我们的<代码>用户> 代码控制器中又添加了一个<代码> 代码>注册方法,在以上两个字段的需求同时增加了<代码>名称> 代码,应该如何处理呢?
我们可以使用类的场景美元<代码> 代码>属性来指定某一场景下需要验证的字段
验证器代码修改如下:
class UserValidate extends 验证{ ,,,protected rule 美元;=,( ,,,,,,,& # 39;用户# 39;,=祝辞,& # 39;要求|电子邮件,, ,,,,,,,& # 39;通过# 39;,=祝辞,& # 39;要求| alpha_num& # 39;, ,,,,,,,& # 39;名字# 39;,=祝辞,& # 39;要求|α# 39; ,,,); ,,,protected message 美元;=,( ,,,,,,,& # 39;user.required& # 39;,=祝辞,& # 39;账号不可为空& # 39;, ,,,,,,,& # 39;pass.required& # 39;,=祝辞,& # 39;密码不可为空& # 39;, ,,,); ,,,protected customAttributes 美元;=,( ,,,,,,& # 39;用户# 39;,=祝辞,& # 39;账号& # 39;, ,,,,,,& # 39;通过# 39;,=祝辞,& # 39;密码& # 39;, ,,,,,,& # 39;名字# 39;,=祝辞,& # 39;用户名称& # 39;, ,,,); ,,,protected scene 美元;=,( ,,,,,,& # 39;登录# 39;,,,,=祝辞,[& # 39;用户# 39;,,& # 39;通过# 39;], ,,,,,,& # 39;注册# 39;,=祝辞,[& # 39;用户# 39;,,& # 39;通过# 39;,,& # 39;名字# 39;】 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullLaravel中怎么实现表单验证分层设计