2016-11-07 50 views
6

由於將laravel從5.1升級到5.3,我在驗證中遇到了一些奇怪的問題。Laravel 5.3當變量爲空時驗證失敗

當我發佈這樣的數據:

firstName null 

和驗證規則是這樣的:

$validator = Validator::make($postData, [ 
       'firstName'   => 'string|max:255', 
       'lastName'   => 'string|max:255' 
      ]); 

上述失敗,消息像"The XYZ must be a string."。我不明白的是:

  1. 爲什麼驗證失敗時,它不被設置爲required? 含義,它應該忽略它,並且如果值爲 爲空,則不會拋出錯誤,對吧?

  2. 爲什麼驗證失敗,如果該值設置爲null

  3. 爲什麼驗證失敗時根本沒有發送參數? (如這是不是在所有張貼lastName

有事在Laravel 5.3驗證改變?

回答

17

添加nullable規則:

'firstName' => 'string|max:255|nullable', 
'lastName' => 'string|max:255|nullable' 

下驗證的領域可能是null。驗證可包含值的字符串和整數等基元時,此功能特別有用。

+0

完美。這解決了它。謝謝!一旦SO允許,我會在10分鐘內接受你的回答。一個簡短的問題是,laravel 5.3中的這個變化是什麼?因爲我沒有在5.1中遇到這個問題,我從來沒有在驗證規則中添加空值。 – Neel

+1

@Neel在5.2中看不到任何'可空'規則的代碼。它只有5.3。所以我想他們在驗證中改變了一些東西。 –

+1

這很有道理。謝謝你,亞歷克斯指出了這一點。這非常有幫助! – Neel