Laravel подтвердить с помощью datetime-local - PullRequest
0 голосов
/ 12 апреля 2020

Мне нужна помощь с проверкой формы Laravel:

blade-сервер:

<input type="datetime-local" class="form-control" name="date[]">

проверка:

    $now = Carbon::now();
    $after = Carbon::createFromDate(2025,01,01);

    return request()->validate([
        'name' => ['required'],
        'description' => ['required'],
        'date' => ['required', 'before:'. $now, 'after:'.$after]
    ]);

Я думаю, что это должно работать, однако не Неважно, какое входное значение оно ВСЕГДА выбрасывает и выдает ошибку. Я думаю, что формат даты не совпадает и Laravel не может сделать сравнение. У меня в основном то же самое сравнение в другой форме, но только с типом даты, и это прекрасно работает.

Я нашел здесь похожий вопрос, но у меня ничего не получалось. У меня нет идей. У кого-нибудь еще была такая же проблема?

Спасибо за ответ заранее

1 Ответ

1 голос
/ 12 апреля 2020

На основании правил проверки, которые вы использовали для поля date, имеет смысл всегда выдавать ошибку. Причина в том, что вы хотите, чтобы ваш date был до текущего времени и в то же время после 2025-01-01 , что не может дать правдивый вывод.

Что вам нужно сделать, так это поменять значения ваших правил на

'date' => 'required|array', // check date is set and is an array
'date.*' => ["before:$after", "after:$now"] // each element in the array needs to follow the before and after rules

Таким образом, вы попросите, чтобы каждое из ваших значений date было после текущего дневного времени и до 2025-01-01 .

...