2017-05-06 14 views
1

2つのフォーム、ルート、およびリクエストを分離したページがあります。ページ上にエラーメッセージを上書きしないようにする

このフォームには、同じ名前のフィールドがあります(たとえば、各フォームにはemailフィールドがあります)。

問題は1つのフォームを検証し、フォームにエラーがある場合、両方のフォームでエラーが表示されます。

上書きエラーを防止するにはどうすればよいですか?

これは私のコードです:

登録要求:

class RegisterFormRequest extends FormRequest 
{ 
    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'email' => 'required|email|unique:users', 
      'name' => 'required', 
      'location' => 'required' 
     ]; 
    } 
} 

ログイン要求:私は両方の形式で電子メールのフィールドの上にこのコードを使用するブレードで

class LoginFormRequest extends FormRequest 
{ 
    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'email' => 'required|email', 
      'password' => 'required' 
     ]; 
    } 
} 

{{$errors->has('email') ? 'has-error' : null }} 

私はログインフォームにメールを入力して送信しないと、登録フォームのメールフィールドの上にエラーが表示されます。

+0

たぶん、あなただけの何か他のものにフィールドの電子メールの名前を変更できますか? – Mozammil

+0

@MozammilKhodabacchasありがとうございますが、フィールド名がデータベースの私の列と同じであるため、フィールド名を変更することはできません。 – MajAfy

答えて

0

私は解決策がありますが、それが最良の方法であるかどうかはわかりません。あなたは多分行うことができ、ブレード・ファイルに、次に

protected function sendFailedLoginResponse(Request $request) 
{ 
    $errors = [$this->username() => trans('auth.failed')]; 

    if ($request->expectsJson()) { 
     return response()->json($errors, 422); 
    } 

    return redirect()->back() 
     ->withInput($request->only($this->username(), 'remember')) 
     ->withErrors($errors, 'login'); 
} 

:ログインコントローラはLoginControllerでこのメソッドをオーバーライドする方法sendFailedLoginResponse

が含まれているAuthenticatesUsers形質を使用して、次のようなエラーメッセージの袋に名前を付けることができます

@if (! $errors->login->isEmpty()) 
    <ul> 
     @foreach ($errors->login->all() as $error) 
      <li>{{ $error }}</li> 
     @endforeach 
    </ul> 
@endif 
+0

ありがとうございますが、私は 'Request'を使用し、コントローラで検証しません – MajAfy

2

最後に解決策が見つかりました。

class RegisterFormRequest extends FormRequest 
{ 
    protected $errorBag = 'register'; 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'email' => 'required|email|unique:users', 
      'name' => 'required', 
      'location' => 'required' 
     ]; 
    } 
} 

とブレードで:

私はRequestファイルに$errorBag変数を追加する必要があります

{{$errors->register->has('email') ? 'has-error' : null }} 
関連する問題