如何使用输入重定向到窗体-Laravel5

如果表单动作抛出异常,我如何使用给定的 POST参数重定向回我的表单页面?

164159 次浏览

你可使用以下连结:

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

如果您使用的是 表格要求确认,那么 Laravel 将使用错误和给定的输入来重定向您。

节选自 \Illuminate\Foundation\Validation\ValidatesRequests:

return redirect()->to($this->getRedirectUrl())
->withInput($request->input())
->withErrors($errors, $this->errorBag());

在字段值上写入旧函数 比如说

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

我在 Laravel 5.3中处理验证异常,如下所示。如果你使用 Laravel Collective,它会自动在输入旁边显示错误,如果你使用 laracast/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();
}

幼虫5:

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

返回页首:

return back()->withInput();

在 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'));

更新: 点击这里获取更多 Laravel 表单输入的示例和现实生活演示-ref = “ https://devsenv.com/Tutorials/how-to-redirect-back-in-Laravel-with-form-input-and-many-might-ways”rel = “ nofollow norefrer”> https://devsenv.com/tutorials/how-to-redirect-back-in-Laravel-with-form-input-and-many-possible-ways

霍普,这样也许能行,谢谢。

这一定会工作 ! ! !

  $validation = Validator::make($request->all(),[
'name' => ['Required','alpha']
]);
  

if($validation->passes()){
print_r($request->name);
}
else{
//this will return the errors & to check put "dd($errors);" in your blade(view)
return back()->withErrors($validation)->withInput();
}
$request->flash('request',$request);


<input type="text" class="form-control" name="name" value="\{\{ old('name') }}">

对我有用。

你可以试试这个:

return redirect()->back()->withInput(Input::all())->with('message', 'Something
went wrong!');

你可以使用这两种方法中的任何一种:

return redirect()->back()->withInput(Input::all())->with('message', 'Some message');

或者,

return redirect('url_goes_here')->withInput(Input::all())->with('message', 'Some message');

为了 Laravel 5

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

对于 Laravel 6,7和8

return back()->withInput();

文档 :