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

Yas*_*nov 7 laravel laravel-4

天儿真好,

我遇到通过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));
}
Run Code Online (Sandbox Code Playgroud)

我已经一直调试代码到ParameterBag.php和$ this->请求的参数列表是空的,我不确定什么应该包含任何值,但所有通过代码输入值为空.不知道现在该做什么,缺少使用post而不是put.

lo_*_*fye 9

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

不过,Laravel确实为此实现了一个共同的解决方法.

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

例1:?_ method = PUT

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

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

  • 需要将"Content-Type"设置为"application/x-www-form-urlencoded". (5认同)
  • 这对我不起作用,但现在我正在使用URL参数来测试Postman中资源控制器上的PUT.那谢谢啦. (2认同)