2017-06-06 15 views
0

私はLaravelのform request validationを使用しています。これは非常に便利で、私のコントローラーをより細かくしています。フォーム入力の検証は古い入力でエラーを返します

さらに複雑なバリデーション部分は、Validatorが失敗した場合、以前のページに戻り、ユーザーの古い入力が返されます。

私は時には、名前のエラーバッグを指定する必要があります。これは、リクエストフォームのオプションとして組み込まれていないようです。

このエラー機能は、フォームリクエストバリデータではデフォルトでは表示されません。私が持っている瞬間

$validator = Validator::make($request->all(), [ 
    'id' => 'required|numeric', 
    'name' => 'required|alpha_spaces', 
    'email' => 'required|email', 
]); 

if ($validator->fails()) { 
    return back() 
     ->withErrors($validator, 'aNamedErrorBag') 
     ->withInput(); 
} 

は、リクエストバリデータファイルにルールを抽出し、名前の誤りバッグaNamedErrorBagに入力して戻るには、バリデータが失敗する方法はありますか?

感謝

答えて

0

FormRequestクラスは、プロパティとしてエラーバッグの名前をjuggles:

/** 
* The key to be used for the view error bag. 
* 
* @var string 
*/ 
protected $errorBag = 'default'; 

あなたはエラーがに送信されるようにしたいerrorBagにこの値を変更することができます。それをカスタムリクエストクラスにプロパティとして追加するだけです。

編集

これはFormRequestは、検証エラーに返すものです:

/** 
* Get the proper failed validation response for the request. 
* 
* @param array $errors 
* @return \Symfony\Component\HttpFoundation\Response 
*/ 
public function response(array $errors) 
{ 
    if ($this->expectsJson()) { 
     return new JsonResponse($errors, 422); 
    } 

    return $this->redirector->to($this->getRedirectUrl()) 
            ->withInput($this->except($this->dontFlash)) 
            ->withErrors($errors, $this->errorBag); 
} 
+0

素晴らしいです!ありがとう@Ohgodwhy。デフォルトではユーザーの古い入力が返されますか? – Ben

+1

@Ben Yup。 FormRequestの検証データをエラーに返す関数を答えに追加しました。 – Ohgodwhy

+0

さらに優れています。再度ありがとうOhgodway :) – Ben

関連する問題