2014-10-31 74 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) !!}