3

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

在此处输入图像描述

在此处输入图像描述

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

有没有办法在 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"
              },
    
4

2 回答 2

0

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

vendor/backpack/crud/src/resources/views/buttons/delete.blade.php 替换此代码: type: 'DELETE',

用这行:

type: 'POST',
data: {
      "_method": "DELETE"
},  
于 2019-03-16T08:19:27.150 回答
-1

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

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

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

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

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

于 2017-03-12T03:39:25.153 回答