開始以前,爲方便查看結果,在/Exceptions/Handler.php
文件捕獲了異常
那麼咱們開始作一個驗證吧: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
方法寫的天然不生效了,以後的驗證便沒法繼續進行