Как валидировать обязательно-необязательное поле и вернуть предыдущее значение в форму?

В 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() сохраняет предыдущие значения ввода во флеш-сессию, которую можно использовать для заполнения формы при возврате на страницу.