2016-04-05 1 views
1

Ich habe einige Probleme mit der Weiterleitung, wenn die Formularvalidierung fehlschlägt. Der Code, den ich verwende ist die folgende:Laravel 5.2 Formular Validierung Umleitung Problem

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

Und das ist meine Form:

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

Die Anwender ihre E-Mail in der E-Mail-Feld setzen sollte und dann durch das obige Stück validiert werde Code. Das Problem ist, dass der Benutzer nie wieder auf die Hauptseite umgeleitet wird

+0

versuche, 'redirect() -> zurück() -> withErrors ($ validator) -> withInput();' –

+0

Ich sehe nur eine Weiterleitung, wenn der Validator fehlschlägt? Wenn also die Form validiert, hat sie keine wohin? –

+0

@StefanoGroenland Das ist richtig. Ich habe die Fälle getestet, in denen die Validierung fehlschlägt, und ungültige Daten eingegeben. – thitami

Antwort

0

können Sie verwenden:

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

Statt einen neuen Validator istance zu schaffen, so Laravel wird automatisch mit allen Fehlern und alle Eingänge umleiten zurück zu die vorherige Seite, wenn die Validierung fehlschlägt.