2014-08-29 64 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