Laravel 5.5
Для проверки ввода я пытаюсь использовать такой код:
public function addNotifyChannelApply(Request $request) {
// Правила валидации
$validator = Validator::make($request->all(), [
'channelTypeId' => 'required|integer',
'notifyChannelValue' => 'required|regex:/^(\d{4})$/',
]);
// Дополнительная проверка
$validator->after(function ($validator) use ($channelTypeId, $channelValue) {
// Тут всякий проверяющий код
});
// Запуск валидации на проверку
$validator->validate();
...
Проблема в том, что валидатор, в случае обнаружения ошибок ввода, делает вызов предыдущего запроса, но не передает ему предыдущие Request данные. То есть old-данные передает, а вот именно предыдущие Request-данные не передает.
В результате контроллер отрабатывает неправильно, потому что не получает нужные Request-данные, они теряются.
Вроде как можно использовать конструкцию withInput( Array ), но у инстанса объекта Validator нет такого метода. Поэтому попробовал вместо $validator->validate(); написать:
if ($validator->fails()) {
return redirect()->back()->withInput($request->all());
}
Но и так, все равно, данные предыдущего Request не приходят в метод контроллера. Сижу и думаю, почему так.
(!) Единственное, что я заметил, так это то, что повторный запрос, генерируемый валидатором, почему-то приходит через метод GET. И у этого запроса, естественно, нет раздела Form Data, в котором были бы видны повторно передаваемые данные формы. Видимо из-за этого теряются переменные POST.
Начал искать, с какого перепугу Validator генерирует GET-запрос вместо POST, ничего не нахожу.
В общем, не получается у меня сделать так, чтобы Validetor генерировал правильный запрос со старыми данными. Как решить эту проблему?