Я пытаюсь проверить поля даты, так что active_from должно быть датой до active_until , а active_until должно быть датой после active_from .
Оба поля скрыты и отключены, пока пользователь не выберет Да в поле выбора с именем active .
Когда пользователь выберет Да, active_from появляется и становится обязательным, и active_until также появляется, но это необязательно, и здесь кроется моя проблема, потому что проверка завершается неудачно, когда active_until не заполнен.
Из того, что я понял, если поле может или не может быть включено / не существует, я должен использовать правило иногда, которое будет проверять другие проверки, только если поле существует и включено. Например,
'active_from' => 'sometimes|required_if:active,yes|date|before:active_until',
Правило обнуляемости должно использоваться, если поле может быть заполнено или не заполнено, но должно ли оно также использоваться, если поле может существовать или не существовать? Например,
'active_until' => 'sometimes|nullable|date|after:active_from',
Итак, мой вопрос, как я могу проверить, если active_from раньше active_until только если active выбрано Да и только если active_until заполнено.
Правильно ли я использую правила, должно active_from использовать только иногда правило или оно также должно использовать обнуляемое правило?
код:
$validated = $request->validate([
'title' => 'required|string|min:3|max:30|unique:categories',
'description' => 'nullable|string|min:3|max:255',
'active' => 'required|in:yes,no',
'active_from' => 'sometimes|required_if:active,yes|date|before:active_until',
'active_until' => 'sometimes|nullable|date|after:active_from',
'highlighted' => 'sometimes|required_if:active,yes|in:yes,no',
'highlighted_from' => 'sometimes|required_if:highlighted,yes|date|before:highlighted_until',
'highlighted_until' => 'sometimes|nullable|date|after:highlighted_from',
]);