Добрый день. Дано:
Форма создания броней для посещения массажа
В форме 3 поля - время_от, время_до, массажный_кабинет
В контроллере есть следующий код:
public function validation()
{
$request_data = request()->only(['meet_room_id', 'time_from', 'time_to', 'date']);
$validation1 = Validator::make($request_data, [
'time_from'=>['required','date_format:H:i'],
'time_to'=>'required|date_format:H:i|after:time_from',
'meet_room_id'=>["required","exists:meet_rooms,id", new BookingCalendarRule($request_data)]
]);
}
Вопрос: как делать, чтобы сначала прошла "простая валидация" типа required, date_format, и т.д., а потом уже запустилось правило BookingCalendarRule?
Основная загвоздка в том, что в BookingCalendarRule используется параметр time_from этого же реквеста, и если изначально формат времени не верный, то и в Rule передастся невалидный параметр.
Я понимаю что я сам туда передаю $requested_data, которая не проверена, но передать туда validated() данные я не могу, так как на тот момент их не существует.
Ближайший выход из ситуации который я нашел, это сделать 2 блока проверки — сначала на "простые правила", а потом уже более сложные.
Правильно ли это? Можно ли сделать как то более элегантно?
Я знаю, что есть возможность сделать кастомные реквесты и перенести туда валидацию - по факту так оно и есть, просто чтобы не писать тут кучу кода "для примера". Вопрос именно про сами блоки с валидацией.
Спасибо!