Как перенаправить обратно в форму с помощью ввода - Laravel 5


Как мне перенаправить обратно на страницу формы с заданными параметрами POST, если мое действие формы вызывает исключение?

Author: infomaniac, 2015-06-26

6 answers

Вы можете использовать следующее:

return Redirect::back()->withInput(Input::all());

Если вы используете Проверку запроса формы , именно так Laravel перенаправит вас обратно с ошибками и заданными входными данными.

Выдержка из \Illuminate\Foundation\Validation\ValidatesRequests:

return redirect()->to($this->getRedirectUrl())
                    ->withInput($request->input())
                    ->withErrors($errors, $this->errorBag());
 42
Author: infomaniac, 2017-07-11 17:21:38

Напишите старую функцию для значения ваших полей , например

<input type="text" name="username" value="{{ old('username') }}">
 26
Author: Vishal Rambhiya, 2016-02-05 07:44:03

В своем HTML вы должны использовать value = {{ old('') }}. Без его использования вы не сможете вернуть значение, потому что какой сеанс будет храниться в их кэше.

Как и для проверки имени, это будет -

<input type="text" name="name" value="{{ old('name') }}" />

Теперь вы можете получить значение после его отправки, если произошла ошибка с перенаправлением.

return redirect()->back()->withInput();

Как @ инфоманьяк говорит, что вы также можете использовать Input class напрямую,

return Redirect::back()->withInput(Input::all());

Добавить: Если вы показываете только определенное поле, то используйте $request->only()

return redirect()->back()->withInput($request->only('name'));

Надеюсь, это может сработать в любом случае, спасибо.

 7
Author: Maniruzzaman Akash, 2017-10-05 04:09:46

Я обрабатываю исключения проверки в Laravel 5.3 следующим образом. Если вы используете Laravel Collective, он автоматически отобразит ошибки рядом с входными данными, а если вы используете laracasts/flash, он также покажет первую ошибку проверки в качестве уведомления.


Handler.php визуализация:

public function render($request, Exception $e)
{
    if ($e instanceof \Illuminate\Validation\ValidationException) {
        return $this->handleValidationException($request, $e);
    }

    (..)
}

И функция:

protected function handleValidationException($request, $e)
    {
        $errors = @$e->validator->errors()->toArray();
        $message = null;
        if (count($errors)) {
            $firstKey = array_keys($errors)[0];
            $message = @$e->validator->errors()->get($firstKey)[0];
            if (strlen($message) == 0) {
                $message = "An error has occurred when trying to register";
            }
        }

        if ($message == null) {
            $message = "An unknown error has occured";
        }

        \Flash::error($message);

        return \Illuminate\Support\Facades\Redirect::back()->withErrors($e->validator)->withInput();
    }
 3
Author: Rav, 2017-03-17 10:21:31

Ларавель 5:

return redirect(...)->withInput();

Только для спины:

return back()->withInput();
 2
Author: Luca C., 2017-05-25 09:35:49

Не могу прокомментировать ответ выше из-за переполнения стека глупыми правилами.

При использовании ответа infomaniac убедитесь, что вы включили пространство имен:

Ларавель все равно отстой по сравнению с yii... Ларавель настолько неорганизован и не имеет подробных примеров.

use Illuminate\Support\Facades\Redirect;

class ... {
}
 -1
Author: RyanT, 2018-09-12 07:48:32