2013-08-20 15 views
0

我創建了一個CakePHP的應用程序,後已設定的routes.php文件的文件,我可以給JSON請求,爲了使用我的應用程序作爲一個API POST請求和數據。爲了測試,我創建了是這樣的一個功能:CakePHP的 - 發送CakePHP中的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')); 
    } 

} 

我還創造了另外一個名字,這是指通過網絡的形式被使用,並且工作正常完全相同的功能。但是,這代碼,在這裏這個功能,當我發佈的數據(我用的開發HTTP客戶端瀏覽器擴展程序),它返回$結果變量爲空,喜歡它沒有收到什麼我送:/ 我發送數據通過如下Chrome擴展使用:

data1='stuff1'&data2='stuff2' 

,它返回我只是

{ 
"results":"" 
} 

(而沒有JSON使用時相同的代碼完美的作品)。

我錯過了什麼?它好像做錯了什麼事?請幫我有點在這裏..

PS:如果你需要更多的信息,只是告訴我,我會張貼。

預先感謝您!

回答

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')); 
    //} 
} 
+0

這不起作用或者:/ –

+0

我做將使變化你將所有的請求對象看作是一個json字符串。您將能夠驗證數據如何傳遞。 –

+0

是的,這回我: { 「結果」:{ 「根」:{ 「PARAMS」:{ 「插件」:空, 「控制器」: 「郵件」, 「行動」: 「API」, 「命名」 :[], 「通過」:[], 「EXT」: 「JSON」, 「isAjax」:假, 「模式」:{ 「用戶」:{ 「插件」:空 「的className」: 「用戶」}} }, 「數據」:NULL, 「查詢」:[], 「URL」: 「郵件\ /api.json」, 「基」: 「」, 「根目錄」: 「\ /」, 「在這裏」:「\ /mails\/api.json「}}} 正如你所看到的,‘數據’數組爲空(NULL),因此沒有我的數據是從CakePHP的好評。爲什麼發生這種情況? :/ –