2013-07-12 39 views
0

在Message 模型,我有CakePHP - 在控制器中調用API的最佳方法?

ID /主題/註釋/ SenderID/RecipientID

所以在消息控制器

public function index(){ 

$msgs = $this->Message->find(); 
$this->set('msgs', $msgs); 
} 

在Message 視圖

foreach ($msgs as $msg) 

echo ... 


endforeach 

但是不是輸出發件人ID和收件人ID,而是希望能夠通過已經設置的API獲取用戶名,http://domain.com/userid/1,它將返回json中的用戶名。

我知道這是一個不好的習慣做到這一點,但你可以建議我應該如何做到這一點在控制器?

回答

1

爲您的API調用創建一個模型,告訴cake不要爲它查找數據庫表並使用邏輯函數將用戶名拉到那裏。

App::uses('AppModel', 'Model'); 
class MyAPI extends AppModel { 
    public $useTable = false; 

    public function getUserNameForID(Int $id = null) { 
     //Your logic here 
     return $userName; 
    } 
} 

然後在你的控制器,你需要加載MyAPI模型和recursivly傳遞數據

$this->loadModel('MyAPI'); 

foreach (...) { 
    ... 
    $userName = $this->MyAPI->getUserNameForID($userID); 
    ... 
} 
+1

尤其+1「創建模型」 - 知道你可以使用一個數據源[像這個](https://github.com/nodesagency/CakePHP-Rest-Datasource)讓你的模型像任何其他模型一樣行動(只是慢很多 - 因爲請求將是外部=))。 – AD7six

相關問題