POST
如果我的表单操作引发异常,如何使用给定的参数重定向回我的表单页面?
您可以使用以下内容:
return Redirect::back()->withInput(Input::all());
或者
return Redirect::back()->withInput($request->all());
如果您正在使用Form Request Validation,这正是 Laravel 将您重定向回错误和给定输入的方式。
摘自\Illuminate\Foundation\Validation\ValidatesRequests
:
return redirect()->to($this->getRedirectUrl())
->withInput($request->input())
->withErrors($errors, $this->errorBag());
- 1
- 11
- 9您应该知道,
<input type="text" name="username" value="{{ old('username') }}">
正如@Vishal_Rambhiya 回应的那样,您将需要此表单 – 卜拉欣 2017 年 9 月 21 日 9:28
例如,在您的字段值上编写旧函数
<input type="text" name="username" value="{{ old('username') }}">
- 1谢谢 !我正在使用 Laravel 5.2,这也适用于我。除了
old()
刀片模板中的函数外,我们还需要withInput()
在控制器中使用以使其工作。喜欢 =>if($validate->fails()) return redirect("somepage")->withErrors($validate)->withInput();
– nice_dev 2016 年 3 月 24 日 10:49 - 2个
- @NiteshVerma 你可以像这样使用 jquery
{{if(isset(old('select')){'$("select option[value=\''.old('select').'\']").attr("selected",true)'}};
– 纳文达 2017 年 11 月 30 日 5:11
在您的 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 表单输入的更多示例和实际演示 - https://devsenv.com/tutorials/how-to-redirect-back-in-laravel-with-form-input-and-many-possible-方法
希望,它可能适用于所有情况,谢谢。
这肯定会奏效!!!
$v = Validator::make($request->all(),[
'name' => ['Required','alpha']
]);
if($v->passes()){
print_r($request->name);
}
else{
//this will return the errors & to check put "dd($errors);" in your blade(view)
return back()->withErrors($v)->withInput();
}
您可以使用这两个中的任何一个:
return redirect()->back()->withInput(Input::all())->with('message', 'Some message');
或者,
return redirect('url_goes_here')->withInput(Input::all())->with('message', 'Some message');
- 您的答案不会为以前的答案添加任何新内容。另外,由于您不解释“ url”是什么,因此也增加了混乱。另外你已经回答了这个问题。请删除您的答案之一。您可以编辑自己以前的帖子。 —— 马克西姆·萨盖达奇尼 20一月9日在6:43
我在 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();
}
拉维尔5:
return redirect(...)->withInput();
只回:
return back()->withInput();
- 2个
你可以试试这个:
return redirect()->back()->withInput(Input::all())->with('message', 'Something
went wrong!');
$request->flash('request',$request);
<input type="text" class="form-control" name="name" value="{{ old('name') }}">
这个对我有用。