2016-04-05 18 views
1

フォームの検証が失敗したときにリダイレクトに問題が発生しています。私が使用しています コードは以下の通りです:Laravel 5.2フォームの検証リダイレクトの問題

// -> use Illuminate\Support\Facades\Validator; 

public function subscribe(Request $request) 
{ 
    $validator = Validator::make($request->all(), [ 
     'email' => 'required|unique:subscriber|email', 
    ]); 

    if ($validator->fails()) { 
     return redirect('main') 
      ->withErrors($validator) 
      ->withInput(); 
    } 

    $email = $request->input('email'); 
    $randomId = $this->generateRandomUserId(); 
    $subscriberSource = $request->input('utm_source'); 

    // ... Save user 
} 

そして、これは私のフォームです:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/register') }}"> 
          {!! csrf_field() !!} 

          <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> 
           <label class="col-md-4 control-label">Email</label> 

           <div class="col-md-6"> 
            <input type="email" class="form-control" name="email" 
              value="{{ $email or old('email') }}"> 

            @if (count($errors) > 0) 
             <div class="alert alert-danger"> 
              <ul> 
               @foreach ($errors->all() as $error) 
                <li>{{ $error }}</li> 
               @endforeach 
              </ul> 
             </div> 
            @endif 
           </div> 
          </div> 

          <div class="form-group"> 
           <div class="col-md-6 col-md-offset-4"> 
            <button type="submit" class="btn btn-primary"> 
             <i class="fa fa-btn fa-refresh"></i>Subscribe now 
            </button> 
           </div> 
          </div> 
         </form> 

ユーザーが電子メールフィールドに自分の電子メールを置く必要があり、その後の上記の部分によって検証を受けますコード。

$this->validate($request, [ 
     'email' => 'required|unique:subscriber|email', 
]); 

を代わりに新しいバリデータistanceを作成する、Laravelは自動的にすべてのエラーで戻ってリダイレクトし、すべての入力になりますので:問題は、ユーザーが戻ってメインページにリダイレクトされることはありません

+0

withErrors($ validator) - > withInput(); ' –

+0

Validatorが失敗したときだけリダイレクトが表示されますか?フォームが正当化すればどこに行かないのでしょうか? –

+0

@StefanoGroenlandそれは正しいです。検証が失敗し、無効なデータが入力されたケースをテストしていました。 – thitami

答えて

0

は、あなたが使うことができることです検証が失敗した場合は前のページ。