CakePHP - 在控制器中调用API的最佳方法?

时间:2013-07-12 15:55:48

标签: api cakephp loops controller call

在消息模型中,我有

ID /主题/注释/ SenderID / RecipientID

所以在消息控制器

public function index(){

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

在消息视图

foreach ($msgs as $msg)

 echo ...


endforeach

但不是输出发件人ID和收件人ID,我希望能够通过已经设置的API http://domain.com/userid/1获取用户名,它将在json中返回用户名。

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

1 个答案:

答案 0 :(得分:1)

为你的API调用创建一个模型,告诉cake不要为它寻找一个db表,并使用逻辑来提取用户名。

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);
    ...
}