在控制器中调用API的最佳方式?

问题描述 投票:0回答:1

消息型号,我有

id/主题/评论/发件人 ID/收件人 ID

所以在消息控制器

public function index(){

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

留言中查看

foreach ($msgs as $msg)

 echo ...

 
endforeach

但是我不想输出发件人 ID 和收件人 ID,而是希望能够通过已设置的 API 获取用户名,http://example.com/userid/1,它将返回用户名一个 JSON。

我知道在视图中执行此操作是一种不好的做法,但是您能建议我应该如何在控制器中执行此操作吗?

loops cakephp controller
1个回答
2
投票

为您的 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 模型并递归地传递您的数据

$this->loadModel('MyAPI');

foreach (...) {
    ...
    $userName = $this->MyAPI->getUserNameForID($userID);
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.