2016-04-05 2 views
1

У меня возникли проблемы с перенаправлением при неудачной проверке формы. код, который я использую следующее:Laravel 5.2 form validation redirection issue

// -> 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> 

Пользователи должны поставить свою электронную почту в поле электронной почты, а затем получить подтверждено приведенной выше части код. Вопрос заключается в том, что пользователь никогда не перенаправлены на главную страницу

+0

попытаться использовать 'redirect() -> back() -> withErrors ($ validator) -> withInput();' –

+0

Я вижу только переадресацию при отказе валидатора? поэтому, если форма проверяет, что у нее нет места, куда идти? –

+0

@StefanoGroenland Это правильно. Я тестировал случаи, когда проверка не выполняется, ввод неверных данных. – thitami

ответ

0

Вы можете использовать:

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

Вместо того чтобы создавать новый валидатор istance, так Laravel будет автоматически перенаправлять обратно со всеми ошибками и все входы на предыдущей странице, если проверка не завершена.