2017-02-04 71 views
9

Bir tarih alanını yalnızca mevcutsa doğrulamaya çalışıyorum. Ben laravel 5.2 Bu kurallar içinde 5,4Laravel 5.4 bazen doğrulama kuralları çalışmıyor

için laravel 5.2 yükseltme önce bu ince ince işleri çalışıyordu: Bu yeni kurallar

public function rules() 
{ 
    return [ 
     'available_from' => 'sometimes|date', 
    ]; 

} 

doğrulama hatası The available from is not a valid date. denedik 5.4 olarak

public function rules() 
{ 
    return [ 
     'available_from' => 'date', 
    ]; 

} 

o döndürür Yine aynı hatayı aldım ve doğrulama işlemini hiç etkilemeyen sometimes kuralları görünüyor. Bu hatayı nasıl kurtarabilirim?

Neden Laravel'in daha önce çalışan bir şeyi değiştirdiğini anlamıyorum !!!

+1

Tarih için kullandığınız biçim nedir? –

+0

Bu formatı kullanıyorum YYYY-AA-DD' –

cevap

17

Sorun, Http \ Kernel.php dosyasındaki \ Illuminate \ Foundation \ Http \ Middleware \ ConvertEmptyStringsToNull :: class nedeniyle oluşur.

Boş tarih alanı gönderdiğinizde, bu katman yazılımı boş dizeyi null değerine dönüştürür. Sonra doğrulama geçerli tarih hatası döndürmez. Daha fazla bilgi için docs'u kontrol edebilirsiniz.

Bu Laravel docs kaynaktan null

public function rules() 
{ 
    return [ 
     'available_from' => 'sometimes|nullable|date', 
    ]; 

} 

ile tespit edilebilir:

null

doğrulama altında alan boş olabilir. Bu, null değerlerini içeren dizeler ve tamsayılar gibi ilkelleri doğrularken özellikle yararlıdır.