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 表字段