00:00
来学一下表单验证啊,手册的地址在这里。其实表单验证主要是为了啊,给我们的表单请求进行一系列的一个验证,就不让一些不符合。我们规则的一些数据。啊,进入到我们的请求当中。接着看一看这个快速验证啊,这些定义路由啊,创建这个控制器,我们都有了直接使用。啊,这个test。我们的test的这个路由。啊,直接使用这个路由。啊,平常我们这里支持任何方式。看到这里面啊,之前的练习代码先给删掉。看一下官方的例子。这里他写了一个啊验证。要使用快速验证呢,可以直接使用request啊,这个对象提供的物理对方法,我直接复制这个例子。
01:08
好在这里。哎,这现在我们需要抬头,子弹和包对转,并且都是必填的,不能为空啊,而且抬头的话呢,它还要和,就是在文章里面,文章表里面进行唯一性,这个唯一性我们暂时不需要。啊。啊,也没有文章那个表,然后最大值不能超过这25,这255。啊,我们就先做一个呃V就说必填的一个验证码,好吧,那我们在哪测试呢。嗯,在这个post man里面使用POS进行测试,当然你你直接去请求的话呢,它会返回一个。呃,419啊,就是CSR嘛,我们先去。PA pap把这个CSRF的。啊,这个中间念给注释掉。或者怎么办呢?要不然每次都是很麻烦,我们可以在atttp里面的mid里面中间里面找到啊,验证CS的这个中间里面。
02:09
啊,它里面有一个except,就是排除的一个路由,就不进行验证的一个路由,我们可以把test加到这里,就是我们test不进行验证,这个是比较有用的,比如我们在做一些支付回调的时候。啊,第三方服务器,像微信啊,或者支付宝这些第三方服务器过来请求我们的时候,有时候用的POS请求,如果我们不把他们这个。啊,相应的路由给排除掉的话,那么我们的啊,这个请求就不能啊,正常的给他响应就直接419拦截掉了嘛,所以一定要记住这个属性在中间件里面的啊,这个c sf talk这个文件里面,在这里可以配置过滤的路由,就是不进行验证的一个路由啊,多个的话,它数组嘛,就多个写就可以了,现在再测试。啊,这里我们就不注释了,我们选择去修改这个中间件。好,这些都关掉就可以了,这样我们T的路由就可以啊正常的去使用破损。
03:03
没看到。是不是?给我们重递上的首页了。啊。为什么充电羊能收人呢?因为啊,这个验证没有通过,所以他会给我们进行一个返回,但是呢,它实际上是返回的是上一个页面,并且会携带这个错误的信息,但是我们直接在这里面请求是没有上一个页面的,所以给我们返回首页了嘛。是吧,那我们看一个。啊,这个比如说验证通过的一个例子,我先把这个验证通过写上,啊,验证通过的一个例子,就是我给上那个抬头和包。在这个form data里面给上抬a body BB啊,这个打错了,这时候我再请求。是不是就能验证通过了,就不给我进行拦截了,所以说呃,在这里面进行给大家演示的话,还不是特别好,因为就是假如他验证没有通过的话呢,它会通过这个就是说类似于我们之前讲的那个back,给我们返回上一个请求的一个页面啊,并且给携带上我们错误的信息放到这个dota l的变量里。
04:08
啊,但是这里就不是特别好演示啊。啊,所以我们把这个删掉吧。啊,删掉。在哪去演示呢?在。控制器里面user controller,我们找到用户。提交个人信息这里啊,提交个人信息这里。好,在这里进行演示啊,我们打这中断掉啊,验证通过搁这中断掉。之后这时候我们就可以去页面中去请求了啊,因为我们页面中请求的话呢,这个表单里面是包含了这个CS talking,所以是能提交过去的。啊,这里面是有这个。Talking。好。现在我们进行提交。你看标题不能为空。包的不能为空,对不对。
05:00
哎,这个验证就不通过了。啊也而且呢,验证不通的时候呢,会进行bank返回盖上的一个错误信息,我们的错误信息也正常显示了,是不是。那这个字段怎么回事呢?为什么这个显示个body,这个显示个标题,这是因为啊这个title啊。这个是有有翻译啊,这个没有翻译,它这个取的这个字段呢。啊,实际上它验证的什么字段,验证我们表单提交过来字段,就就是说有没有提交这个title或者body,先看看翻译文件在哪。翻译文件是在。Resource long里面嘛,这个中文里面,然后有个valid validation,这里面进行翻译的嘛,所以你去搜的话,它是有title的一个翻译的,是不是标题。好,呃,晚点我们再说自定义消息的问题,先把这个字段给解决,我们说过他验证了一个字段,实际上是我放表单提交的这个字段嘛。对吧。你看这个用户。这个人信息表里面啊,这个文件里面。
06:00
他没有这个字段,我们这只有。这个头像看个人信息啊,那只有什么,只有这个name和email是不是,所以嗯,这里我们也改一改,改成这个内幕。啊,改成这个email,同时我们给name加上一个最小值,就是说M的话,你。最小是四。嗯,然后max最大不能超过32,加上这两个验证。好吧,那邮箱呢,你不仅要必填,你还要符合这个邮箱的一个格式,加上一个邮箱的验证,这些所有的验证规则在手册上都是可以查到的。现在我们只是看怎么使用。好吧,好,现在来进行提交。对不对,名称至少为四个字符。是吧,我们把名称改成四个字符。然后把油箱为空。是不是邮箱不能为空啊,这个为什么又变成正常了呢?比如说他的消息为什么又正常了呢?啊,中文翻译正常是因为啊刚才说过了,在这个。
07:04
啊,这个中文的这个包里面嘛,它有。有这个内幕的。一个翻译,你看有这个内幕的一个翻译,而且还有隐瞒的一个翻译,对不对。但是我们这里。啊,有时候你不想用它,不想用它这个消息,就是说自带这个翻译怎么办呢。我们可以自己自定义消息啊,自定义消息呃,再给一个第二个参数是一个数组,然后这里面就可以自定义消息嘛,比如内幕点一定是你的字段,然后加上你的点,点上你的规则,比如说这个必填。对不对,我们就可以改成啊用户名不能。围控。是吧,这时候我们就可以自定义消息了。我们先试一下。把这个给改成空。是不是变成我们自己定义的消息了?你看如果我的是长度不够的话呢,它还是用的原来的名称是吧,所以每个规则你都要写。
08:06
啊,每个规则你都要写,比如说它的这个命。啊,他的这个max,其实我们在之前直接用这个LA提供的登录和注册,他们用的也是这个表单的一个验证。叫什么用户名啊,不能小于。有四位是吧。哎,用户名不能。大鱼。32位。这样,所有的消息就都有了。啊,不能小于四位是不是,所以你如果再给邮箱制定的话,你接着就写邮箱相关的规则就可以了,就是邮箱的这个require。啊,就是邮箱必填嘛,当然这个我们就不写了,就写一个这个就可以了。哎,验证通过的时候会继续往下执行啊,这个我们给他阻断掉了。注释一下啊,快速验证啊,这个是自定义消息啊,这里。
09:05
自定义消息。你接着看看他文档吧。嗯。多个的话使用这个分隔符啊,多个验证过来,使用分隔符去验证,当然也可以使用数组,你看你使用哪喜欢用哪种方式都可以,我的例子是用的这个分隔符吗。它会将所有的错误信息存储在一个命名错误的信息包中啊。就是那个我们页面中哦。这里使用了这个艾斯啊,就是。这个里面啊,会把粗形存到这里面,所以我们这里就直接显示了嘛,所以用这个的话演示例子是比较省事的,之前我们都做过这些了。
10:01
嵌套字段就是说如果你的APP请求里面有这种数组啊,这种复合性的一些数据可以使用点啊,就是这个数组里面的这个键,用点的形式去验证数组里面的一个规则,那数组的话,呃,表单提交数组的话,一般会常见于。啊,我们的这个阿贾克斯的一个提交,或者是这个表单提交中的一个这个多选。啊,切个boss。咱用点可以去选择它对应的键去验验证啊。好,这个就是说如何显示错误消息,这里给我们讲的非常详细,它会将我们的这个验证啊,失败的这个消息呢,闪进行一个闪存到塞。啊。在视图中呢,可以直接使用那个dota as这个变量判断有没有错误消息,有就显示就可以了。看到了吧,然后我们在呃做登录和注册的时候,他们用的也是一样的嘛,所以那时候我们就把错误的这个子组件给提取出来了嘛,现在我们真正的用到了表单验证,就可以继续去使用我们以前写好的这个错误的一个自主件。
11:12
嗯,艾若指令啊,I指令呢是。可以啊,检查验证我们的错误消息是否存在。从而呃,让这个。啊,这一块去执行啊,就是说如果它错误消息存在的话,就执行这一块验证的话呢,就是我们的一个字段,这个是在什么时候比较方便呢?在我们字段中啊,去验证它比较方便,比如我们可以。I。在这个。信息里面啊,在这里,在它下面。进行错误消息的一个判断。And error。啊,就是如果有错误消息的话,这里有显示一个红色的一个提示的一个文字。我们页面使用了bootla,所以这里直接写boot的一个代码。
12:04
Class。We feel back。那错误消息显示什么呢?就显示这个dota。啊,Message就可以了。啊,这个message就是当前错了消息,但我们验证什么字段呢?验证肯定是这个name,不会因要和你的这个name相同,就当name出错的时候呢,它就会显示。看到了吧,好,来试一下。现在刷新一下页面。提交一下。可以看到错误消息,但是下面没有显示。下面没有显示。呃,实际上它是有内容的,有内容的。我们来证明一下,比如说我们在这里去输出这个message。再试一下提交。你看到是有这个内容的,对不对。说明什么?这里没有显示,这里没有显示的话,那只能是我们样式写的有问题啊。
13:02
这个没问题。就是它的这个上一个这个div挨着的这个input,它这里少了一个什么属性呢,少了一个啊。Is in order是否在这个验证中的一个一个事项?是吧?啊。是否就是说验证失败的一个使用,但是我们不能不能这么写啊,这么写的话它会。就是虽然它会出来,但它的框也是红的,就即使我们去这个刷新的话,它框也是红的。所以这里还是要加一个判断的,对吧,当你啊这个。这个错误存在的时候啊,内这个错误存在的时候。End。哎。我才去显示它,否则的话就不显示。这样就比较完整了。看到了吧。你还在提交。是吧,这样就会有错误,但我们刷新页面错误就会消失,因为是在这个闪闪存中的嘛。
14:03
这样就可以使用啊,这个去显示我们错误,也可以使用这个去显示我们的错误啊,都可以。这是自定义消息。接着看啊。嗯。啊,如果是阿贾克请求的话,它会自动把我们的这个啊,错误的一个响应变成一个包含错误的阶层响应,这个后续我们选阿贾克斯,用到阿贾这块的时候再看。啊,接下来看见看一下什么问题呢,我们现在这个表单比较简单,就是我们用户的信息比较简单,就两个字段。Name和这个邮箱是吧,所以我们在这里面。在里面写就完了,但如果你想一下,如果你的这个提交的表单字段非常多呢?啊,假如有。嗯。几十个字段的,20个字段的,你都写到这里面,你这个文件会非常的长,是不是。对吧,那有没有一种办法。能不把验证写到这里?
15:01
而是提取成文件。有没有。啊,当然有的看看。就我们创建这个表单的一个请求啊。专门创建一个表单请求这个文件。好。这里就先注释掉。这里就先出示。接着。使用啊。P artisan make。Request创建一个啊,用于验证表单的一个文件,一个类,它会生成在哪呢?会生成在。啊,Attp下面的request目录现在是没有,但我们创建时候就有了。我们创建一个。啊user request诶验证用户表的一个request,关于文件的命名啊,建议还是说以什么样的类型的文件,就后面以什么样的啊这个去写一下,比如控制器我们会啊,叫什么什么control,然后我们的验证的话就会叫什么什么request,方便我们去识别。
16:07
这就创建完成了,创建完成了这个目录,我们刷新一下,是不是多了一个request,一个目录里面就多了一个我们的表单验证的一个类。对不对,也是,我们可以在这个里面去写我们的这个规则,听了吧,你看这不是rules,在rules里面ta我们的规则就可以了。复制下规则。哎,这两条规则。哎,在流程里面返回规则就可以。好,那这里定义完怎么使用呢。嗯,就是。把这个request。啊,换成我们自己定义的这个request就可以了啊,你可以看一看我们自己定的这个request,它是继承了这个form request对不对,而formal request呢,又继承了这个request。是吧,又继承了这个request。你看继承这个request,所以我们直接使用我们这里刚才新建的这个用于表单验证的这个user request的是完全啊,因为它是继承于他嘛,所以完全是包含了它所有的一些功能的。
17:11
对不对,那这里我们直接使用这个user request啊。这个名字就不用改行,这样的话啊,一样会进行这个验证。当我们请求过来的时候,表单请求过来的时候,就会经过这个user request的这一系列验证啊,如果不符合的话,一样是给你返回了,比如我们这里如果验证通过,我们DD验证通过好不好看一看啊。现在继续提交信息。403。是不是为什么四乘三呢?是因为啊,这个我们要把它改成处。就可以了,看一下它的一个作用,在这个表单验证里面可以搜索到啊,他说是它包含了这个方法,但这个方法中呢,你可以啊,去这个经过身份验证的用户确定是否具有更新给定资源的一个权限,也就是说他会进行一个权限的一个验证啊。
18:08
对吧,好。这个就先。不看啊,继续看我们的。请求验证。这里改正出之后呢,再次去尝试看我们的验证有没有生效啊,请求我们这里看会不会进行一个。表单的一个验证。刷新,继续提交。哎,是不是给我们返回回来了。对吧,什么表单,但是它这里又是名称了,就是我们之前写在控制器里面,我们可以在这里自定义消息,对吧,那在这个验证文件里面怎么自定义消息呢?啊,它有一个啊message方法,可以去制定一个消息,定义消息的方式呢,也是跟这个一样,也是要加这个验证的一个属性和具体的一个验证的一个规则去定义,在手册上这里也有说明。在下面啊。
19:04
啊,这个。自定义这个显示的一个错误的消息。你直接辅助过来。好,这个可以,这个可以了,当然你这个字段应该应该是我们都对应上啊。这个消息的话,我就都删了,因为我们之前写的这些消息。啊,用我们这些消息。邮箱我们就不验证了,邮箱,呃,它默认的消息就可以啊,现在再来看一下,你去这里提交。是不是写对了?好,这个就是我们创建这个文件进行一个验证。这样的话,如果你字段非常多的话,在这里写就可以了,而不是把所有的验证都放到这个控制器里面,让控制器显得代码特别的多。接着往下看。这个手动创建验证器是什么意思呢?我们之前的验证啊,不管是。
20:04
在这个文件里面进行验证的,还是在控制器里面行验证的,是不是自动就给我们返回了,对吧?我们使用request,我它自动就是错误的时候就给我们返回了,但有时候我们不想让它自动返回,我们想制定一些啊这个逻辑的处理啊,比如我们验证啊,其他一些数据不通过是吧?会给他啊进行啊一个重新项啊,进行其他一些操作,这时候怎么办呢?啊,你可以就是使用这个。手动创建验证器就不使用它的这个方法,那你可以使用这个wall的门面去,呃,Make去创建这个验证。然后去调用这个验证的一个F的一个啊结果来决定你验不验证成功啊,验证失败你就可以return重定向。这我就不做演示了。往下看。啊,这里有所有的可以使用的系统,给我们提供了一些验证规则,用到了什么规则,我们在这里去验证就可以。包括直接用到邮箱的验证都有啊,比如说email的验证。
21:07
再往下看。再往下就是比较一些高级的应用了,比如说系统提供的这些验证规则已经不够你使用了,你可以自己去啊,自定义的验证规则。来下面找找。对自定义的验证规则,你可以创建一个这个ruler的一个验证规则的一个对象,然后它会放到这个APP rule下,在验证的时候呢,你就可以,呃,在规则这里。就是使用你自定义的这个验证的一个对象,这是比较高级的一个应用。啊,这里先不做讲解。还有就是啊,当你的验就是验证规则不够的时候呢,我们可以使用数组的形式去啊。就是写多个验证规则。然后可以使用B包去简单的去写一下,我们制定一验证规则,上面那个是使用ruler的一个类去验证,这样的话,我们使用B包的话是比较简单的方式去制定一些验证的一个规则。
22:11
好,表单验证就说到这里。
我来说两句