2014-08-29 43 views
2

我有用於刪除像這樣Laravel:在控制器上模態confimation破壞功能

{{Form::open(array('method'=>'DELETE', 'route' => array('users.destroy', $user->id)))}} 
{{Form::submit('Delete', array('class'=>'btn btn-danger'))}} 
{{Form::close()}} 

一個記錄的形式路由到控制器破壞功能,我有像這樣

public function destroy($id) 
{               
    User::find($id)->delete(); 
    return Redirect::route('users.index'); 
}  
刪除按鈕

但我想刪除記錄之前彈出確認提醒。有沒有辦法讓控制器打開模態對話框並獲取返回值?還是控制器打開一個視圖,打開一個模式,再次指向另一個控制器,刪除或重新路由控制器......如此控制器應該如何控制邏輯這種方式混淆...

我有Twitter的引導和jQuery在我<head>部分,像這樣

<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet"> | 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
+1

你可以只控制按鈕的使用Ajax的點擊,打開一個模式,並在模態對話框中的刪除按鈕,你終於可以提交一個POST請求到控制器。 – 2014-08-29 15:11:05

+1

處理此問題的最簡單方法是在提交表單之前通過JS實現確認警報。你可以顯示一個簡單的JS'confirm'對話框或者通過AJAX加載控制器產生的詳細信息。這兩個選項都不需要頁面重新加載/重定向。 – 2014-08-29 15:11:22

回答

5

有什麼你有你的控制器做的,只是一些JavaScript會做的伎倆。

由於您使用bootstrap,最簡單的方法是使用BootstrapDialog

{{Form::open(array('method'=>'DELETE', 'route' => array('users.destroy', $user->id)))}} 
{{Form::submit('Delete', array('class'=>'btn btn-danger'))}} 
{{Form::close()}} 

<script> 
$(document).ready(function(){ 
    $('form').submit(function(e){ 
     e.preventDefault(); 
     url = $(this).parent().attr('action'); 
     BootstrapDialog.confirm('Are you sure you want to delete?', function(result){ 
      if(result) { 
       $.ajax(url); 
      } 
     }); 
    }); 

}); 
</script> 

注意不要忘記添加以下後引導和jQuery包含。可以從here下載。

Working Demo

+0

謝謝!這是我正在尋找的。但我無法讓它工作。沒有彈出窗口,我無法找出原因。 爲了測試它,我添加了一個alert('test');在jQuery腳本開始的時候,當我的頁面加載時,當我點擊刪除按鈕,但它似乎沒有休息正在工作。 – Phil 2014-08-29 16:22:27

+0

@Phil你可以讓JsFiddle來調查問題嗎? – 2014-08-29 16:35:45

+0

問題在於,dom元素'$('form .btn.btn-danger')'需要像'href =「#」'那樣有屬性'href'。因爲'preventDefault();'在這裏不起作用。 – manix 2014-08-29 17:12:51