【问题标题】:CakePHP - Best way to Call API in controller?CakePHP - 在控制器中调用 API 的最佳方式?
【发布时间】:2013-07-11 05:42:13
【问题描述】:

在消息模型中,我有

id/主题/评论/SenderID/RecipientID

所以在消息中Controller

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 中的用户名。

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

【问题讨论】:

    标签: api cakephp loops controller call


    【解决方案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 模型并递归地传递您的数据

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

    【讨论】:

    • +1 特别是对于“创建模型” - 知道您可以使用数据源 like this one 使您的模型像任何其他模型一样运行(只是慢很多 - 因为请求将是外部的 = ) ).
    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多