Laravel-4将空PUT数据发送到资源丰富的控制器

时间:2013-05-30 01:26:10

标签: laravel laravel-4

天儿真好,

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

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

是否有其他人有类似的问题?

更新功能,其中section_id和数据在响应中都为空:

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->请求的参数列表为空,我不确定什么应该包含任何值,但是通过代码输入值都是空的。不知道现在该做什么,没有使用post而不是put。

2 个答案:

答案 0 :(得分:9)

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

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

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

示例1:     ?_method = PUT

示例2:     < input type =“hidden”name =“_ method”value =“PUT”/>

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

答案 1 :(得分:2)

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