在 laravel 中删除确认

Posted

技术标签:

【中文标题】在 laravel 中删除确认【英文标题】:delete confirmation in laravel 【发布时间】:2016-01-04 05:59:49 【问题描述】:

我有以下代码:

@foreach($results as $result)
  <tr>
    <td>$result->my_id</td>
    <td>$result->province_name</td>
    <td>$result->city_name</td>
    <td>
      <a class="btn btn-primary" href="route('city-edit', $result->my_id)"><i class="fa fa-edit"></i></a>
      <a class="btn btn-danger" href="route('city-delete', $result->my_id)"><i class="fa fa-trash"></i></a>
    </td>
  </tr>
@endforeach

如何在删除每条数据时添加确认?

【问题讨论】:

只需添加onclick="return confirm('Are you sure?')"。查看我的帖子以获得完整的答案。 【参考方案1】:

我更喜欢更简单的方法,只需添加onclick="return confirm('Are you sure?')",如下所示:

<a class="btn btn-danger" onclick="return confirm('Are you sure?')" href="route('city-delete', $result->my_id)"><i class="fa fa-trash"></i></a>

【讨论】:

即使这段代码更短,您也应该考虑使用事件委托并将此操作实现为Unobtrusive javascript 如何在“”上编写脚本??是“ ?? 您在另一个单引号中使用了一对单引号,这不起作用。请将单对引号包含在双引号内,反之亦然:&lt;a onclick="return confirm('Are you sure?')"&gt;&lt;a onclick='return confirm("Are you sure?")'&gt; 简单有效。极好的。记住孩子们,完成胜于完美:-) 我怎样才能以这种方式使用甜蜜警报???这是甜蜜警报的网址。 link【参考方案2】:

如果这是您的链接:

<a href="#" class="delete" data-confirm="Are you sure to delete this item?">Delete</a>

使用这个 Javascript:

var deleteLinks = document.querySelectorAll('.delete');

for (var i = 0; i < deleteLinks.length; i++) 
    deleteLinks[i].addEventListener('click', function(event) 
        event.preventDefault();

        var choice = confirm(this.getAttribute('data-confirm'));

        if (choice) 
            window.location.href = this.getAttribute('href');
        
    );

注意:&lt;a&gt; 需要class 中的delete。 此解决方案使用 Unobtrusive JavaScript 并且应该适用于 IE 9 或更高版本。

【讨论】:

【参考方案3】:
  <a class="btn btn-danger" onclick="return myFunction();" href="route('city-delete', $result->my_id)"><i class="fa fa-trash"></i></a>

<script>
  function myFunction() 
      if(!confirm("Are You Sure to delete this"))
      event.preventDefault();
  
 </script>

【讨论】:

这个动作可以通过事件委托不显眼地完成。请停止使用突兀的 Javascript 并停止在任何地方放置 onclick 感谢您的信息 Peh. 如果我使用 jquery 选择器使用类 .click 事件进行同一进程 我相信你也可以用 jquery 实现同样的效果。但是您应该确保将内容和代码分开,这是通过使用data-confirm 属性而不是将确认文本硬编码到javascript中来完成的。【参考方案4】:
<a href=" route('city-delete', $result->my_id) " 
   class="btn btn-danger" data-method="DELETE" data-confirm="Are you sure?"> Delete</a>

使用brexis/laravel-data-method 包,您可以指定适当的HTTP 方法和确认文本。

如果您在路线文件中包含此内容,这将很有帮助:

Route::get('cities/city', 'CityController@show')->name('city-show');
Route::delete('cities/city', 'CityController@destroy')->name('city-delete');

【讨论】:

【参考方案5】:

如果这是您的链接:

<a href="route('venuepropertyarea.delete', ['propertyarea' => $propertyareaname->id])" data-method="DELETE" data-confirm="Are you sure to delete this item?" class="btn btn-danger btn-xs pull-right delete"><i class="fa fa-trash"></i> </a>

路线:

Route::get('/icrm/venues/property_area/delete/propertyarea', 'VenuePropertyAreaController@deletepropertyarea')->name('venuepropertyarea.delete');

使用这个 Javascript:

var deleteLinks = document.querySelectorAll('.delete');

for (var i = 0; i < deleteLinks.length; i++) 
    deleteLinks[i].addEventListener('click', function(event) 
        event.preventDefault();

        var choice = confirm(this.getAttribute('data-confirm'));

        if (choice) 
            window.location.href = this.getAttribute('href');
        
    );

注意:&lt;a&gt; 需要class 中的delete。 此解决方案使用 Unobtrusive JavaScript 并且应该适用于 IE 9 或更高版本。

【讨论】:

【参考方案6】:

index.blade.php

<form action="route('todos.destroy', $todo->Id)" method="post">
              <input type="hidden" name="_method" value="DELETE">
              @csrf
      <button id="btnDelete"class="btn btn-danger btn-sm">Delete</button>
     </form>
<script type="javascript">
       document.onsubmit=function()
           return confirm('Sure?');
       
</script>

我使用的是纯 PHP 表单,方法 DELETE 必须在提交页面操作中作为隐藏传递,所以我通过 javascript 捕获它并收到确认警报。

【讨论】:

以上是关于在 laravel 中删除确认的主要内容,如果未能解决你的问题,请参考以下文章

laravel modal 删除确认不会去破坏路由

laravel 无法删除记录

Laravel:删除用户前提示

带有 HTML 表单的 Laravel 删除按钮

如何在laravel 5.2登录时检查电子邮件(确认/否)?

在 Laravel 中提交表单后如何重定向确认页面?