1

在消息模型中,我有

id/主题/评论/SenderID/RecipientID

所以在消息控制器中

public function index(){

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

在消息视图中

foreach ($msgs as $msg)

 echo ...


endforeach

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

我知道在视图中这样做是一种不好的做法,但是你能建议我应该如何在控制器中这样做吗?

4

1 回答 1

2

为您的 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);
    ...
}
于 2013-07-12T22:48:58.597 回答