70

POST如果我的表单操作引发异常,如何使用给定的参数重定向回我的表单页面

9 个回答  正确答案  下面标红的都是对的

87

您可以使用以下内容:

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());
60

例如,在您的字段值上编写旧函数

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

在您的 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-方法

希望,它可能适用于所有情况,谢谢。

7

这肯定会奏效!!!

  $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();
   }
5

您可以使用这两个中的任何一个:

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
4

我在 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();
    }
4

拉维尔5:

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

只回:

return back()->withInput();
1

你可以试试这个:

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

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

这个对我有用。

你的答案

来自 https://stackoverflow.com/questions/31081644/how-to-redirect-back-to-form-with-input-laravel-5