最近使用laravel-admin寫一個項目,第一次接觸踩坑是避免不了的,剛好遇到一個表單送出時,資料值傳0,驗證規則為required,但是提示失敗的問題。
這使得很多表單送出的應用場景不能很好的适用。于是決定剖析laravel-admin源碼,
最開始以為是驗證的時候過濾掉的,結果調試了半天也不對,
經過一番折騰後終于找到位置了,是laravel-admin的表單資料指派給Validator對象前做了過濾處理,
在encore\laravel-admin\src\Form\Field.php中的sanitizeInput()方法
因為0在php中也會被認為是空元素是以會被過濾掉,
解決辦法就是給array_filter()加上第二個參數使用回調函數過濾,具體代碼就不寫了,很簡單。