В моем приложении пользователь выбирает дату из средства выбора даты, а затем дата отображается во входных данных в формате, соответствующем языку пользователя.
Когда форма отправлена, я хотел бы проверить соответствующую дату, однако валидатор не знает формат даты, в котором была отправлена дата.
Мой вопрос в том, должен ли я преобразовать дату в Y-m-d, прежде чем она будет передана валидатору, или есть способ указать валидатору правильный формат для валидации?
Если вы используете input[type = "date"] со своим datepicker, передаваемое значение всегда будет Y-m-d.






Пользовательские правила проверки Laravel
Вы можете определить мультиформатную проверку даты в вашем AppServiceProvider.
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('new-format', function($attribute, $value, $formats) {
foreach($formats as $format) {
$parsed = date_parse_from_format($format, $value);
// validation success
if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) {
return true;
}
}
// validation failed
return false;
});
}
}
Теперь вы можете использовать настраиваемое правило проверки:
'your-date' => 'new-format:"Y-m-d H:i:s.u","Y-m-d"'
Более простой вариант - использовать Laravel date_format:format.
правило (https://laravel.com/docs/5.5/validation#rule-date-format). Это встроенная функция в Laravel, для которой не требуется настраиваемое правило (доступно в Laravel 5.0+).
Ты можешь сделать:
$rule['date'] = 'required|date_format:d/m/Y';
или же
$rule['date'] = 'required|date_format:Y-m-d';
Вы можете попробовать использовать только правило
date, в противном случае я бы предложил изменить его наY-m-dперед проверкой. laravel.com/docs/5.6/validation#rule-date