Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复Slim 3 PUT、DELETE请求不起作用_Php_Httprequest_Slim 3 - Fatal编程技术网

Php 如何修复Slim 3 PUT、DELETE请求不起作用

Php 如何修复Slim 3 PUT、DELETE请求不起作用,php,httprequest,slim-3,Php,Httprequest,Slim 3,我正在尝试实现删除和放置请求,但出现错误。下面是我的代码 $app->group('/departments', function () { $this->put('/{id}', DepartmentController::class . ':update')->setName('department.update'); $this->delete('/{id}', DepartmentController::class . ':destroy')->

我正在尝试实现删除和放置请求,但出现错误。下面是我的代码

$app->group('/departments', function () {
   $this->put('/{id}', DepartmentController::class . ':update')->setName('department.update');
   $this->delete('/{id}', DepartmentController::class . ':destroy')->setName('department.destroy');
});
当我尝试运行代码时,我收到了此错误消息

Method not allowed. Must be one of: PUT, DELETE

我错过什么了吗?谢谢

我通过添加一个隐藏的输入法解决了我的问题,如下所示

//Update
<form action="{{path_for('department.update', {'id':department.id})}}" method="post">
  <input type="hidden" name="_METHOD" value="PUT">
</form>

//Delete
<form action="{{path_for('department.destroy', {'id':department.id})}}" method="post">
  <input type="hidden" name="_METHOD" value="DELETE">
</form>
试试看


您是如何调用API的?似乎您使用了一个
GET
,并且像您定义的那样,它只能管理
PUT
DELETE
http文本要更新数据,我有一个表单并提交给“department.update”路由名称是的,但是表单中使用的方法是什么?通常,它是一种形式上的
POST
。是的,我使用
POST
方法。我不知道问题出在哪里。你用
部门/{id}
、是或
$this put
)或
删除
$this->delete
)来定义该URL,而不是
发布
。因此您的表单无法执行,因为
POST
的路由不存在。我的
/routes/web.php
上已经有这些路由组。谢谢
$app->group('/departments', function () {
   $app->put('/{id}', DepartmentController::class . ':update')->setName('department.update');
   $app->delete('/{id}', DepartmentController::class . ':destroy')->setName('department.destroy');
});
$app->group('/departments', function () {
   $app->put('/{id}', DepartmentController::class . ':update')->setName('department.update');
   $app->delete('/{id}', DepartmentController::class . ':destroy')->setName('department.destroy');
});