付费课程, 订阅后即可观看

框架探秘 - 东邪西毒

21 集视频
1小时58分钟

本期 Laravel 6 视频教程咱们看一看发生异常后如何跳转回原来的登录页面,并且携带相关的数据,这一次我们先把数据保存到session中,以待今后使用,我们每一步都走的很艰难,但每一步都坚实有力,绝不做技术上虚浮之人。

张三丰 2019.12.16 16:53

这个验证器,是在控制器引入了验证器相关的代码。

在laravel框架,验证器只需要在控制器的相关函数,作为一个参数传递过来,formRequest 可以专门抽出去成为独立的验证逻辑,感觉写的好优雅,这个不知道如何实现的?

国营 2019.12.16 23:40

哈哈,兄台比我想得要懒得多,这个点稍微翻翻代码追一下就知道了,其实自己想一下也能明白,就是函数调用的魔术方法和传参类型的结合,判断传参的类型中是否有验证方法,有就用魔术方法自动调用,php就这么点东西,别把它想复杂了。

张三丰 2019.12.18 16:19

老哥说的是有道理,自己根据这个原理也能简单实现一个。

但是laravel的表单验证器,formRequest 类作为控制器的一个参数传递,我是真的没看明白,在什么地方进行的拦截验证,在整个控制器没有找到触发验证器的代码。

laravel这个框架源代码,没有深厚的功底,是真看不懂。o(╥﹏╥)o

国营 2019.12.19 00:37

哈哈,你的这份认真和执着会帮助你很快搞定这个问题的,像我这么懒的人,我是很少去翻看源代码的,我就喜欢自己推理,自己实现。Laravel就是一个大包工头,然后把每个部分又一层层的分包出去,解耦和灵活性都有了,开发的使用非常方便,效率很高,你要看代码的话,就得费点劲,层层去剥离了。我说的那种实现方式其实是比较复杂的方式了,效率也不高,完全可以更简单,formRequest验证执行逻辑更早,这就说明机制本身就拥有提前调用的机制,如果它没有提供验证器才会进入到controller的具体函数中,执行具体方法中的验证器(如果有的话),所以也可以从这个角度入手,自己去玩吧,我就帮你到这了,如果这条线也不通,我再给你提供别的思路,这些东西都是有套路的。

微信扫码登录