Php Zend Framework参数插件未检索post参数
我正在扩展Php Zend Framework参数插件未检索post参数,php,angularjs,zend-framework2,Php,Angularjs,Zend Framework2,我正在扩展AbstractRestfulController并试图将数据发布到我的create函数中,但是当我尝试使用params插件接收数据时,我得到了一个空数组: public function create() { $data = $this->params()->fromPost(); return new JsonModel(array('data' => $data)); } 我使用save功能成功地从我的angular$reso
AbstractRestfulController
并试图将数据发布到我的create
函数中,但是当我尝试使用params插件接收数据时,我得到了一个空数组:
public function create() {
$data = $this->params()->fromPost();
return new JsonModel(array('data' => $data));
}
我使用save功能成功地从我的angular$resource
发布,并将其取回:
{"data":[]}
你知道为什么params插件没有得到参数吗?还有什么我可以试试的吗?当使用
$this->params()->fromPost()时,您应该在操作中使用它
例如:
public function createAction()
{
$data = $this->params()->fromPost();
return new JsonModel(array('data' => $data));
}
目前,您只使用未被解析的标准函数名。因此,在这种情况下,您需要将发布的数据传递给该函数$this->create($data)代码>您希望向服务器发送什么
Angular将所有内容作为原始JSON(mimetype application/JSON)发送,而不是application/x-www-form-urlencoded。因此,它不会出现在$\u POST
中,相反,您可以通过以下方式获得它:
$json = json_decode(file_get_contents('php://input'));
也许您的框架有一个更简单的方法。函数必须在参数列表中指定$data
变量:
public function create($data) {
$data = $this->params()->fromPost();
return new JsonModel(array('data' => $data));
}
框架似乎随后传入了$\u POST
superglobal。AbstractRestfulController的文档说明HTTP谓词被路由到特定函数。它还声明create函数期望传入$data变量,但不清楚如何传入。从文档中可以看到:“POST maps to create()。该方法需要一个$data参数,通常是$\u POST superglobal数组。”这是否意味着它将通过$\u POST superglobal?好的,更多测试,似乎是这样。如果指定$data作为它在$\u POST superglobal中传递的函数参数,Zend框架将为应用程序/json
查找内容类型
标题,并自动解析json,如果json不正确,则抛出错误。Angular提供此标题。