【问题标题】:CakePHP 3 default json decode request data doesn't workCakePHP 3 默认的 json 解码请求数据不起作用
【发布时间】:2016-08-13 17:43:34
【问题描述】:

CakePHP 文档说:

通常 REST 应用程序不仅以备用数据格式输出内容,而且还接受不同格式的数据。在 CakePHP 中,RequestHandlerComponent 有助于实现这一点。默认情况下,它将为 POST/PUT 请求解码任何传入的 JSON/XML 输入数据,并在 $this->request->data 中提供该数据的数组版本。 source

但我的$this->request->data 是空数组。

AppController.php 我加载$this->loadComponent('RequestHandler');

这是我的 RequestHandler 调试信息

我的请求数据:

Accept: application/json Content-Type: application/json

{"store_id": 671}

而我的请求数据总是为空,为什么?

【问题讨论】:

  • 您的请求网址如何?
  • 只需通过GET 发布数据并检查它们是否为空。例如:http://localhost/URL?key=test
  • 请求地址:http://localhost/MenuItems/add
  • 只有当请求是json或者xml时才会出现这个问题
  • 当您说“我的请求数据”时,您的意思是这是您发送的内容,还是您的应用收到的内容,您知道是因为您已经调试过了?另外,您在我们的应用程序中究竟在哪里测试$this->request->data

标签: php json cakephp


【解决方案1】:

默认情况下,如果是 JSON 格式,PHP 不会读取 POST 数据。我对 CakePHP 不熟悉,所以我帮不上忙,但我通常处理它的方式是:

$JSON = json_decode(file_get_contents('php://input'), true);
echo $JSON['store_id'];

【讨论】:

    【解决方案2】:

    调试信息来自 isAuthorized。在那种情况下,JSON 数据只能由 $this->request->input('json_decode');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 2016-06-19
      • 2015-11-26
      • 1970-01-01
      相关资源
      最近更新 更多