Как перенаправить обратно на мою страницу формы с заданными параметрами POST
, если мое действие формы вызывает исключение?
Как перенаправить обратно в форму с помощью ввода - Laravel 5
Ответ 1
Вы можете использовать следующее:
return Redirect::back()->withInput(Input::all());
Если вы используете Проверка запроса формы, это именно то, как Laravel перенаправляет вас с ошибками и данным вводом.
Выдержка из \Illuminate\Foundation\Validation\ValidatesRequests
:
return redirect()->to($this->getRedirectUrl()) ->withInput($request->input()) ->withErrors($errors, $this->errorBag());
Ответ 2
записать старую функцию в значение поля например
<input type="text" name="username" value="{{ old('username') }}">
Ответ 3
В вашем HTML вы должны использовать value = {{ old('') }}
. Не используя его, вы не можете вернуть значение, потому что какой-то сеанс будет храниться в кеше.
Как и для проверки имени, это будет -
<input type="text" name="name" value="{{ old('name') }}" />
Теперь вы можете получить значение после отправки, если есть ошибка с перенаправлением.
return redirect()->back()->withInput();
Как говорит @infomaniac, вы также можете использовать Input class
напрямую,
return Redirect::back()->withInput(Input::all());
Добавить
Если вы показываете только конкретное поле, используйте $request->only()
return redirect()->back()->withInput($request->only('name'));
Надеюсь, это может сработать во всех случаях, спасибо.
Ответ 4
Я обрабатываю исключения проверки в Laravel 5.3, как это. Если вы используете Laravel Collective, он автоматически отображает ошибки рядом с входами, и если вы используете laracasts/flash, он также покажет первую ошибку проверки как уведомление.
Handler.php
render:
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();
}
Ответ 5
Laravel 5:
return redirect(...)->withInput();
только для возврата:
return back()->withInput();
Ответ 6
это будет работать определенно !!!
$v = Validator::make($request->all(),[
'name' => ['Required','alpha']
]);
if($v->passes()){
$ab = $request->name;
print_r($ab);
}
else{
//this will return the errors & to check put "dd($errors);" in your blade(view)
return back()->withErrors($v)->withInput();
}
Ответ 7
$request->flash('request',$request);
<input type="text" class="form-control" name="name" value="{{ old('name') }}">
Меня устраивает.
Ответ 8
Вы можете попробовать это:
return redirect()->back()->withInput(Input::all())->with('message', 'Something
went wrong!');