Laravel 5.4 Backpack 无法删除项目,返回“403 Forbidden”错误

Posted

技术标签:

【中文标题】Laravel 5.4 Backpack 无法删除项目,返回“403 Forbidden”错误【英文标题】:Laravel 5.4 Backpack can't delete item, returns "403 Forbidden" error 【发布时间】:2017-07-26 01:43:45 【问题描述】:

我正在使用 Laravel 的背包开发管理面板。当我想通过点击删除按钮来删除某些项目时,我收到 Not Deleted 错误 - 请参阅屏幕截图。

看起来当使用CRUD::resource()Route::resource 方法但服务器(在我的情况下为apache)不允许它们使用动态资源时可能会出现403 和405 错误——无论这意味着什么细节...... .

有没有办法在 Apache 上启用这些方法?

我得到了它的工作,但我想使用默认的 HTTP 方法。

快速修复

我能够通过复制和修改背包的list.blade.php CRUD 视图来解决这个问题。

    复制视图vendor/backpack/crud/src/resources/views/list.blade.php并将其移动到resources/views/vendor/backpack/crud/list.blade.php

    修改第 271 行定义的 AJAX 请求。

     if (confirm(" trans('backpack::crud.delete_confirm') ") == true) 
          $.ajax(
              url: delete_url,
              type: 'POST', // change from DELETE to POST
              data:  // "spoof" the HTTP verb "DELETE"
                "_method": "DELETE"
              ,
    

【问题讨论】:

【参考方案1】:

laravel/框架:5.8.2 背包/crud:3.6

供应商/背包/crud/src/resources/views/buttons/delete.blade.php 替换此代码: type: 'DELETE',

用这行:

type: 'POST',
data: 
      "_method": "DELETE"
,  

【讨论】:

【参考方案2】:

你应该在你的控制器中检查访问权限

$this->crud->allowAccess(['delete']);

我觉得你没必要这么复杂。 当你安装背包时,你应该像这样跑

php artisan vendor:publish --provider="Backpack\Base\BaseServiceProvider" #publishes configs, langs, views and AdminLTE files

它会自动将文件复制到正确的位置

【讨论】:

以上是关于Laravel 5.4 Backpack 无法删除项目,返回“403 Forbidden”错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Backpack - 内联创建,未在数据库中添加关系

设置中的 Laravel-Backpack/Settings 表字段

在 MyAccountController [backpack-laravel] 中添加个人资料信息

从 laravel 5.4 中删除 public

从 url laravel 5.4 中删除公共

Laravel-Backpack:结合 hasMany 和 hasManyThrough 在列表中添加子句