web-dev-qa-db-ja.com

入力を含むフォームにリダイレクトする方法-Laravel 5

フォームアクションが例外をスローした場合、指定されたPOSTパラメーターを使用してフォームページにリダイレクトする方法を教えてください。

44
infomaniac

以下を使用できます。

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

Form Request Validation を使用している場合、これはまさにLaravelがエラーと指定された入力でリダイレクトする方法です。

\Illuminate\Foundation\Validation\ValidatesRequests からの抜粋:

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

たとえば、フィールド値に古い関数を書く

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

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

願わくば、それがすべての場合にうまくいくかもしれない、ありがとう。

12

このような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
Rav

Laravel 5:

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

背面のみ:

return back()->withInput();
3
Luca C.

これは間違いなく動作します !!!

  $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();
   }
0
Aditya Tomar
$request->flash('request',$request);

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

わたしにはできる。