【问题标题】:ZendFramework 3 PUT method parameters accessZendFramework 3 PUT 方法参数访问
【发布时间】:2017-02-10 03:23:45
【问题描述】:

我基于 Zend Framework 3 制作 REST API 服务。我停留在应该处理 PUT 请求的时刻。就这样吧:

PUT /document/14
Request parameters are: {
    token: '.. some string here ..',
    name: '....',

}

问题是,我什至无法获得“令牌”,因为 $this->getRequest()->getQuery() 和 $this->getPost() 都不包含任何参数。

注册 Zend_Controller_Plugin_PutHandler 之类的建议我见过很少,但是我在 Zend Framework 3 中没有找到这样的类。

【问题讨论】:

  • 您是在使用 AbstractRestfulController(实际上应该这样做)还是 AbstractActionController 并试图捕获发布数据?
  • ... AbstractActionController 并尝试像 $this->params()->fromPost('token', false) 那样捕获帖子数据?
  • 我使用 AbstractRestfulController 并且 ->fromPost('token', false) 给出空结果。
  • 如果回复中未提及发帖人的姓名,则不会发送通知(除非您是原始发帖人),所以我没有看到您的回复。关于您的问题:您应该使用 AbstractRestfulController 的 create($data) 函数来捕获 POST 请求。并且 $data 参数包含您的 POST 变量。 $data['token'] 是您的令牌发布值。我错过了什么吗?

标签: zend-framework3


【解决方案1】:

您需要获取 JSON 数据,并且没有 params 帮助器,所以快速破解将是:

// In your Controller action
$content = $this->getRequest()->getContent();
$data    = json_decode($content, true);

var_dump($data); // here you will have your json as array

这可行,但更好的方法是使用AbstractRestfulController。 扩展它,您将在 update($id, $data) 方法中自动注入 $id 和 $data。您还将拥有 RESTful API 的所有其他方法。

您应该检查该类的实现以获取更多信息,尤其是方法jsonDecode

【讨论】:

  • 你帮了我一点忙。但我不需要解码 json 数据,因为 ->getContent() 给了我多部分表单数据。所以我还有一个问题。是否有任何嵌入式 ZF3 方法来解码这种地狱般的代码? :)
  • 您的请求是您在问题中提出的 JSON?你能编辑上面的问题吗?因为这里的评论与你的评论不同……
猜你喜欢
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
相关资源
最近更新 更多