0

CakePHP アプリを作成しました。routes.php ファイルを設定した後、アプリを API として使用するために JSON リクエストを送信できます。テストのために、次のような関数を作成しました。

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 フォームを介して使用することを意図しており、正しく機能します。しかし、このコードは、ここのこの関数で、データを POST すると (Dev HTTP Client chrome 拡張機能を使用します)、送信したものを受信しないように、$results 変数を空にします:/ データを次のように私が使用するクロム拡張機能:

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 に答える