7

天,

我在通过 Chrome Postman 向控制器发出 PUT 请求时遇到问题,PUT 数据不存在,POST 数据工作正常。

在确保供应商产品的最新版本可用之前,我执行了作曲家更新,甚至删除了 bootstrap/compiled.php。

其他人有类似的问题吗?

响应中 section_id 和 data 都为空的更新函数:

public function update($id)
{
    $section_id = Input::get('section_id');

    $data = Input::all();

    return Response::json(array('id' => $id, 'section_id' => $section_id, 'data' => $data));
}

我已经将代码一直调试到 ParameterBag.php 并且 $this->request 的参数列表是空的,我不确定应该包含任何值,但在整个代码中输入值都是空的。不知道现在该做什么,没有使用 post 而不是 put。

4

2 回答 2

9

PUT 参数不能“开箱即用”,因为 PHP 本身对它们有一些安全限制。见:http ://www.php.net/manual/en/features.file-upload.put-method.php

不过,Laravel 确实为此实现了一个常见的解决方法。

在 Postman(或您的表单、curl 或您正在使用的任何客户端)中,只需添加一个 URL 参数名称:“_method”值:PUT

示例 1:?_method=PUT

示例 2:<input type="hidden" name="_method" value="PUT" />

Laravel 使用 symfony Http Foundation 来检查 _method 变量,如果它存在,它会根据它的值进行路由,而不是使用实际的 HTTP 方法。

于 2013-08-21T22:16:19.333 回答
2

您必须发送一个 POST 请求并添加一个_method带有值的额外参数PUT,它会正常工作。

于 2014-07-18T14:25:54.330 回答