天天看點

laravel-admin 表單送出,使用required驗證時對于傳值為0報錯問題

最近使用laravel-admin寫一個項目,第一次接觸踩坑是避免不了的,剛好遇到一個表單送出時,資料值傳0,驗證規則為required,但是提示失敗的問題。

laravel-admin 表單送出,使用required驗證時對于傳值為0報錯問題

這使得很多表單送出的應用場景不能很好的适用。于是決定剖析laravel-admin源碼,

最開始以為是驗證的時候過濾掉的,結果調試了半天也不對,

經過一番折騰後終于找到位置了,是laravel-admin的表單資料指派給Validator對象前做了過濾處理,

在encore\laravel-admin\src\Form\Field.php中的sanitizeInput()方法

laravel-admin 表單送出,使用required驗證時對于傳值為0報錯問題

因為0在php中也會被認為是空元素是以會被過濾掉,

解決辦法就是給array_filter()加上第二個參數使用回調函數過濾,具體代碼就不寫了,很簡單。