开始之前,为方便查看结果,在/Exceptions/Handler.php
文件捕获了异常
request
并注入到需要验证控制器的方法
return true
因为我们身份验证一般不在这里验证
end_date
可以很简单的通过start_date
来限制时间范围,那么start_date
该怎么验证呢?我本来想的是这样的。
curr_date
,然后start_date
通过这个字段限制范围。测试发现实际并不生效。直接进入了控制器打印的数据
Illuminate\Validation\Concerns、ValidatesAttributes::validateAfterOrEqual
方法跳到compareDates
方法,并尝试打印了$this->getValue($parameters[0])
这时候的$paramters[0]
为curr_date
总是null
prepareForValidation
方法,之后再测试
Laravel
的IoC
容器config/app.php
里有关表单验证的服务提供者
ValidatesWhenResolved
对象的类在解析之后会自动调用validate
方法IndexTicketRequest
类,没有这个方法,去到父类,发现实现了ValidatesWhenResolved
,而validate
是在trait
的ValidatesWhenResolvedTrait
validate
方法里分三步主要的$this->prepareForValidation()
在验证之前的准备curr_date
,我们来看看新建验证实例便知道答案
$this->validationData()
方法拿到request
的数据,然后再通过$this->container->call([$this, 'rules'])
拿到验证规则,所以我们在rules
方法写的自然不生效了,之后的验证便无法继续进行这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.