CakePHP 2.x - 在控制器中访问$ _POST数据(REST POST请求)

时间:2014-01-31 13:49:58

标签: php ajax rest cakephp post

我正在使用Cakephp 2.x创建一个API,需要POST请求才能将一些数据发布到服务器,但是当我使用127.0.0.1/appname/api/confirmcode=123发布邮件时使用$_POST post参数my Router::connect('/api/confirm', array('controller' => 'awesomeController', 'action' => 'confirm')); <?php class AwesomeController extends AppController { public function confirm() { $this->autoRender = false; $this->layout = 'ajax'; pr($_POST); } } ?> 是一个空数组。

我的路线有效,我可以看到我在控制器中声明和输出的变量,并且我已经通过使用chrome开发者控制台检查网络数据检查了参数是否在请求中传递。

$_POST

我的端点让get请求工作正常,它似乎只是POST数据。

不太确定为什么$this->request->query $this->request->data $this->request->params 甚至无法使用,我确信这是一些我忽略的可笑的傻事!

**编辑**

我尝试了以下但没有成功:

{{1}}

我有另一种方法,我使用GET和?parameter = value等,我可以使用上述调用之一来检索数据。

3 个答案:

答案 0 :(得分:0)

在这种情况下,变量应该在

$this->request->query

尝试使用api/confirm?code=123等网址,它们将位于request->query

答案 1 :(得分:0)

我可能错了,因为我对cakePHP很新,但是因为你设置了:

$this->autoRender = false;

因此视图不会自动呈现以将视图设置为ajax布局。 没有必要打电话:

$this->render(); 

将布局设置为上述here

嗯,希望它有所帮助。

答案 2 :(得分:0)

如果有一天有人通过谷歌搜索来到这里,就会遇到同样的问题。

有一个REST控制器,使用URL /rest/something/cool.json

调用

在RestController.php中调用的方法有输出,但没有POST,没有REQUEST。

尝试使用code = 123,发送直接JSON,使其工作的唯一方法是将Content-Type设置为application / json并发送实际工作的JSON:Cake似乎在任何事情之前验证,发送原始数据似乎无用