Вы должны написать собственный формат проверки для этого.Date_format от Laravel ожидает только один параметр и не способен обрабатывать несколько форматов.Есть два способа добавить пользовательскую проверку.во-первых, создайте хранилище правил и добавьте туда свою логику проверки. Здесь Тейлор Отвелл объяснил этот метод.
Другой способ сделать это - продлить валидацию в сервис-провайдере приложения и добавить туда новое правило.добавьте этот код в сервис-провайдер приложения:
use Illuminate\Support\Facades\Validator;
Validator::extend('multi_date_format', function ($attribute, $value, $parameters,$validator) {
$ok = true;
$result = [];
// iterate through all formats
foreach ($parameters as $parameter){
//validate with laravels standard date format validation
$result[] = $validator->validateDateFormat($attribute,$value,[$parameter]);
}
//if none of result array is true. it sets ok to false
if(!in_array(true,$result)){
$ok = false;
$validator->setCustomMessages(['multi_date_format' => 'The format must be one of Y-m-d ,Y-m or Y-m-']);
}
return $ok;
});
И здесь вы можете использовать его следующим образом:
$validator = Validator::make(['date' => '2000-02-01'], [
'date' => 'required|multi_date_format:Y-m-d,Y-m,Y-m-'
]);
if($validator->fails()) {
$errors = $validator->errors()->all();
}