Как написать валидацию до или после даты, которая сравнивается с текущей датой? - PullRequest
4 голосов
/ 22 февраля 2020

Я новичок в Laravel и использую Laravel 6.x. Мне нужно написать проверку, которая просматривает дату, предоставленную пользователем в форме (через JQuery datepicker), чтобы убедиться, что пользователь выбрал дату, которая находится в текущей дате или перед ней. Я не могу понять, как express текущую дату без использования апострофов в моем выражении где-нибудь, и ЭТО будет портить Laravel правильное понимание проверки.

Например, если я напишу:

'sleep_date' => ['required', 'before-or-equal-date: Date(Y-m-d)']

, это не сработает, потому что вокруг аргумента функции Date нет апострофов. Но если я добавлю апострофы, как в этом примере, Laravel говорит, что есть синтаксическая ошибка:

'sleep_date' => ['required', 'before-or-equal-date: Date('Y-m-d')']

Как мне это кодировать, чтобы она работала как задумано?

1 Ответ

3 голосов
/ 22 февраля 2020

Вы можете объединить текущую дату с точкой:

'sleep_date' => ['required', 'before_or_equal:' .  Date('Y-m-d')]

Также вы можете использовать помощник laravel now() вместо Date() таким же образом:

'sleep_date' => ['required', 'before_or_equal:' . now()->format('Y-m-d')]
...