В Laravel для валидации обязательного поля, которое может быть необязательным, можно использовать правило sometimes
вместе с правилом required
. Чтобы вернуть предыдущее значение в форму при ошибке валидации, необходимо использовать помощника old()
.
Пример:
use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; public function store(Request $request) { // Определение правил валидации $rules = [ 'name' => 'sometimes|required|string', 'email' => 'sometimes|required|email', // другие правила валидации ]; // Создание объекта валидатора $validator = Validator::make($request->all(), $rules); // Проверка наличия ошибок валидации if ($validator->fails()) { // Вернуть предыдущие значения в форму return redirect()->back()->withErrors($validator)->withInput(); } // Добавление кода для обработки успешной валидации }
В этом примере, если поле name
и поле email
присутствуют в запросе,
они будут обязательными для валидации. Если они отсутствуют,
то эти поля будут пропущены при валидации. Если валидация
не проходит, Laravel автоматически вернет пользователя на предыдущую страницу с подробными сообщениями об ошибках отправленных данных в переменной $errors
. Метод withInput()
сохраняет предыдущие значения ввода во флеш-сессию, которую можно использовать для заполнения формы при возврате на страницу.