2017-02-04 16 views
9

Próbuję sprawdzić pole daty tylko wtedy, gdy jest obecne. To działa dobrze, zanim uaktualnieniu z laravel 5,2 do 5,4Laravel 5.4 czasem zasady sprawdzania poprawności nie działają

W laravel 5.2 niniejszego Regulaminu działa prawidłowo:

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

} 

W 5.4 zwraca błąd walidacji The available from is not a valid date. Próbowałem to nowe zasady

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

} 

Nadal występuje ten sam błąd i wydaje się, że reguły w ogóle nie wpływają na sprawdzanie poprawności. Jak mogę pozbyć się tego błędu?

Nie rozumiem, dlaczego Laravel zmienił coś, co wcześniej działało !!!

+1

Jaki jest format używany na datę? –

+0

Używam tego formatu "RRRR-MM-DD" –

Odpowiedz

17

Problem występuje z powodu \ Illuminate \ Foundation \ Http \ Middleware \ ConvertEmptyStringsToNull :: class w Http \ Kernel.php.

Po przesłaniu pustego pola daty to oprogramowanie pośrednie przekształca pusty łańcuch w wartość null. Następnie walidacja zwraca nieprawidłowy błąd daty. Aby uzyskać więcej informacji, sprawdź numer docs.

To może być ustalona z wartości pustych

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

} 

Od Laravel docs:

pustych

Pole pod walidacji może być null. Jest to szczególnie użyteczne podczas sprawdzania poprawności prymitywu, takiego jak łańcuchy i liczby całkowite, które mogą zawierać wartości null.

Powiązane problemy