好吧,基本上我正在向Codeigniter发送一个带有一些JSON有效负载的POST请求。我使用RESTAdapater。 JSON在没有密钥的情况下被发送到那里,所以我无法访问它。
这是模特:
App.Bookmark = DS.Model.extend({
title: DS.attr("string"),
url : DS.attr("string")
});
这是控制器:
App.BookmarksNewController = Ember.ObjectController.extend({
save: function(){
this.get("model.transaction").commit();
this.get("target").transitionTo("bookmarks");
}
});
在CI中的REST实现中,我使用标准方式来访问帖子请求$this->input("key")
。但是,当生成上述请求时,仅发送原始JSON数据。因此,我似乎没有办法以任何方式引用它。
举个例子:
function post(){
$this->response(var_dump(file_get_contents("php://input")),200);
}
给我这个输出:
string(48) "{"bookmark":{"title":"sdffdfsd","url":"sdfsdf"}}"
我希望看到的是:
string(48) payload="{"bookmark":{"title":"sdffdfsd","url":"sdfsdf"}}"
然后是服务器我可以用$this->post("payload").
所以1的2.无论如何用密钥包装JSON有效负载?或者无论如何在CI中访问原始JSON数据而没有可用的密钥?
答案 0 :(得分:0)
好吧我自己想出来(或者更确切地说明了这些例子)。
当使用Adam Whitney的Phil Sturgeons REST controller for CodeIgniter分支时,$this->_post_args
将提供JSON有效负载。在底层实现中,他使用了我已经提到的file_get_contents("php://input")
。
编辑:同样的约定也适用于其他类型的请求,例如,$this->_delete_args
中将提供DELETE请求数据。或者$this->_args
是可以找到所有类型的args的“神奇”地方。