Laravel中怎么实现表单验证分层设计

  介绍

本篇文章给大家分享的是有关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   null

Laravel中怎么实现表单验证分层设计