0

我创建了一个 CakePHP 应用程序,并且在设置了 routes.php 文件之后,我可以发送 JSON 请求,以便将我的应用程序用作 API。为了测试,我创建了一个函数,如下所示:

public function api() {
    if($this->request->is('post')) {
        $data1 = (string)$this->request->data['Model']['data1'];
        $data2 = (string)$this->request->data['Model']['data2'];

        //logic goes here,it does stuff and $result is the variable where the result of the login is saved
        //$data1 and $data2 are used in the logic

        $result = 'result';
        $this->set('results',$result);
        $this->set('_serialize',array('results'));
    }

}

我还使用另一个名称创建了完全相同的功能,该名称旨在通过 Web 表单使用并且可以正常工作。但是,这段代码,在这里的这个函数,当我发布数据(我使用 Dev HTTP Client chrome 扩展)时,它返回 $results 变量为空,就像它没有收到我发送的内容一样:/ 我通过如下方式发送数据我使用的 chrome 扩展:

data1='stuff1'&data2='stuff2'

它只返回我

{
"results":""
}

(虽然相同的代码在没有 json 的情况下可以完美运行)。

我错过了什么吗?它似乎做错了什么吗?请在这里帮我一点..

ps:如果您需要更多信息,请告诉我,我会发布它。

先感谢您!

4

1 回答 1

0

访问该帖子的正确方法是

$this->request->data['data1'];

要验证正在发送什么数据,请执行以下操作:

public function api() {
    //if($this->request->is('post')) {
        $data1 = (string)$this->request->data['Model']['data1'];
        $data2 = (string)$this->request->data['Model']['data2'];

        //logic goes here,it does stuff and $result is the variable where the result of the login is saved
        //$data1 and $data2 are used in the logic

        $result = 'result';
        //$this->set('results',$result);
        $this->set('results',array('root'=>$this->request);
        $this->set('_serialize',array('results'));
    //}
}
于 2013-08-21T12:30:23.860 回答