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

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

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

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

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

快速修复

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

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

  2. 修改第 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"
              },
    

【问题讨论】:

    标签: laravel apache2 laravel-backpack


    【解决方案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
      

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

      【讨论】:

        猜你喜欢
        • 2017-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-12
        • 1970-01-01
        • 2017-11-27
        相关资源
        最近更新 更多