2017-09-28 2 views
1

Ich versuche, mit meinem PHP-Code ein Problem mit "zwei Formen auf einer Seite" anzugehen, aber es stellt sich als schlauer heraus, als ich erwartet habe, und verhält sich einfach nicht so, wie ich es dachte.Haben Sie 2 Formulare auf der gleichen Seite in Laravel?

Für das erste Formular (Login) verwende ich diese if-Anweisung, um festzustellen, ob die Nachricht, wenn für den Login.

@if(Session::has('message') && Session::get('last_message_for') == 'login') 
<div class="notification is-{{ Session::get('color') }}"> 
    <i class="fa fa-times"></i> &nbsp;&nbsp;{{ Session::get('message') }} 
</div> 
@elseif($errors->first() && Session::get('last_message_for') == 'login') 
<div class="notification is-warning"> 
    <i class="fa fa-times"></i> &nbsp;&nbsp;{{ $errors->first() }} 
</div> 
@endif 

Ich habe den gleichen Code für meine zweite Form bekam, aber es prüft nur die last_message_for für einen anderen Wert ‚login‘.

@if(Session::has('message') && Session::get('last_message_for') == 'modal') 
<div class="modal is-active" id="modal-forgotPassword"> 
@else 
<div class="modal" id="modal-forgotPassword"> 
@endif 
    <div class="modal-background"></div> 
    <div class="modal-card"> 
     <header class="modal-card-head"> 
      <p class="modal-card-title" id="open-modal">Forgot Password?</p> <button class="delete"></button> 
     </header> 
     <form action="{{ route('frontend.guest.password.forgot') }}" method="post"> 
      <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
      <section class="modal-card-body"> 
       <div class="content"> 
        @if(Session::has('message') && Session::get('last_message_for') == 'modal') 
        <div class="notification is-{{ Session::get('color') }}"> 
         <i class="fa fa-times"></i> &nbsp;&nbsp;{{ Session::get('message') }} 
        </div> 
        @endif 
        <div class="field"> 
         <p class="control has-icons-left"> 
          <input class="input" name="email" placeholder="Enter an email..." type="email"> 
          <span class="icon is-small is-left"><i class="fa fa-envelope"></i></span> 
         </p> 
        </div> 
        <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
       </div> 
      </section> 
      <footer class="modal-card-foot"> 
       <button class="button is-success" type="submit"><i class="fa fa-sign-in"></i> &nbsp;&nbsp;Send email</button> 
      </footer> 
     </form> 
    </div> 
</div> 

nun auf die Frage, funktioniert der Login-Teil völlig in Ordnung und zeigt die Fehlermeldungen, wenn es eine für sie sind, aber die zweite zeigt keine Fehler, wenn ich einige haben.

ich dies mit dem last_message_for

Session::put('last_message_for', 'login'); 

Hier setzen Sie den Code für meine zweite Form ist:

public function onForgotPassword(Request $request) { 
    $validator = Validator::make($request->all(), [ 
     'email' => 'required|email|exists:users,mail', 
    ]); 

    Session::put('last_message_for', 'modal'); 

    if ($validator->fails()) { 
     return redirect()->route('frontend.guest.login')->withErrors($validator->messages());; 
    } 
    else { 
     Mail::to($request->input('email'))->send(new ForgotPasswordEmail()); 
     return redirect()->route('frontend.guest.login')->withMessage('Email Sent')->withColor('warning'); 
    } 
} 
+0

Ich habe nicht sehen, wo Sie Fehler für die zweite Form zeigen, wie diese '$ errors-> zuerst()' Sie nur Code, denn wenn seesion ' –

Antwort

0

Sie sind nicht Validierungsfehler Handhabung, nur die Nachrichten zurückgegeben, diese Sollte es tun.

@if(Session::has('message') && Session::get('last_message_for') == 'modal') 
<div class="notification is-{{ Session::get('color') }}"> 
    <i class="fa fa-times"></i> &nbsp;&nbsp;{{ Session::get('message') }} 
</div> 
@elseif($errors->first() && Session::get('last_message_for') == 'login') 
<div class="notification is-warning"> 
    <i class="fa fa-times"></i> &nbsp;&nbsp;{{ $errors->first() }} 
</div> 
@endif 
+0

thnx für diese hat Message', bemerkte ich nie wirklich, dass . –

Verwandte Themen