2014-10-31 54 views
3

我是Laravel的新手,但設法使聯繫表單工作並在出現驗證錯誤時顯示。Laravel聯繫表確認警告框

但是我確實有一個問題,不知道如何在Laravel中處理它。發送郵件時(驗證規則通過)我想顯示一個警告框(引導程序樣式),說'謝謝,郵件已發送'。

CODE

public function postContact() 
{ 
    $formData = Input::all(); 

    // input validator with its rules 
    $validator = Validator::make(
     array(
      'name' => $formData['name'], 
      'email' => $formData['email'], 
      'subject' => $formData['subject'], 
      'message' => $formData['message'] 
     ), 
     array(
      'name' => 'required|min:3', 
      'email' => 'required|email', 
      'subject' => 'required|min:6', 
      'message' => 'required|min:5' 
     ) 
    ); 

    if ($validator -> passes()) { 
     // data is valid 
     Mail::send('emails.message', $formData, function($message) use ($formData) { 
      $message -> from($formData['email'], $formData['name']); 
      $message -> to('[email protected]', 'John Doe') -> subject($formData['subject']); 
     }); 

     return View::make('contact'); 
    } else { 
     // data is invalid 
     return Redirect::to('/contact') -> withErrors($validator); 
    } 
} 

我怎樣才能在Laravel 4實現這一目標?任何幫助將不勝感激。

謝謝。

回答

1

您可以使用Redirect類的with方法:

if ($validator -> passes()) { 
    // data is valid 
    Mail::send('emails.message', $formData, function($message) use ($formData) { 
     $message -> from($formData['email'], $formData['name']); 
     $message -> to('[email protected]', 'John Doe') -> subject($formData['subject']); 
    }); 

    //Redirect to contact page 
    return Redirect::to('/contact')->with('success', true)->with('message','That was great!'); 
} else { 
    // data is invalid 
    return Redirect::to('/contact') -> withErrors($validator); 
} 

您將被重定向到聯繫人頁面會話變量successmessage設置。

將它們用於您視圖中的警報,例如,在引導警報:

用刀片

@if(Session::has('success')) 
    <div class="alert alert-success"> 
     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
    <strong>Success!</strong> {{ Session::get('message', '') }} 
    </div> 
@endif 

沒有刀片

<?php if(Session::has('success')): ?> 
    <div class="alert alert-success"> 
     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
     <strong>Success!</strong> <?php echo Session::get('message', ''); ?> 
    </div> 
<?php endif; ?> 

如果您使用的是他們這樣,你甚至可以提供成功的警報,信息警報,或任何提醒你想要。

+1

漂亮,謝謝! – Ciwan 2014-11-03 09:07:04

+0

不客氣! :-) – Cyruxx 2014-11-03 18:19:11

0

當您的數據無效時,您使用withErrors()方法將一些數據(錯誤)傳遞到您的路線。 您可以對任何類型的數據使用相同的過程。

例如:

return View::make('contact')->withMessage("Thanks, message has been sent"); 

此方法withMessage()將創建一個新的變量message並將其存儲在會話爲一個請求週期。

所以,在你看來,你可以這樣訪問:

@if(Session::has('message')) 
<div class="alert-box success"> 
    {{ Session::get('message') }} 
</div> 
@endif 
0

我假設你使用的引導使這個答案將顯示在彈出窗口中的信息(我測試它Laravel 5)

return View::make('contact')->with('message', "Thanks, message has been sent"); 

確保此代碼將在腳註中添加

<!-- Show Pop up Window if there is message called back --> 
<?php 
if(session('message')) 
{ 
    echo '<script> 
     document.getElementById("popup_message").click(); 
    </script>'; 
} 
?> 

幫手中添加此功能。PHP這樣你就可以在任何地方使用它在你的代碼

function message_pop_up_window($message) 
{ 
    $display = ' 
    <a class="popup_message" id="popup_message" data-toggle="modal" data-target="#message" href="#"></a> 
    <div class="modal fade" id="message" role="dialog"> 
     <div class="modal-dialog modal-md"> 
      <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
       <h4 class="modal-title">Messsage </h4> 
      </div> 
      <div class="modal-body"> 
       <p>'.$message.'</p> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div>'; 
    return $display; 
} 

然後調用該函數在你頁面

{!! message_pop_up_window($message) !!}