好的,我不是 100% 确定我理解你想要做什么,所以这里有一个聪明人的话,以防万一:Cake 和 JMVC 都是全面的 MVC 框架。如果您试图将它们组合为一个单一的有凝聚力的平台来构建您的应用程序,我强烈建议您检查您的方法/平台/等。
另外——我不是 jmvc 方面的专家,所以我只是假装在 jmvc 中处理来自 Cake 的响应是完全不可能的,出于某种奇怪的原因。作为记录,想想 Cake 的反应是这样的:
{ "Model" :
[{
'id': 1,
'name' : 'Justin Meyer',
'birthday': '1982-10-20'
},
{
'id': 2,
'name' : 'Brian Moschel',
'birthday': '1983-11-10'
}]
}
至少从 Cake 1.2 开始,Cake 就有全面的 REST 服务支持。您感兴趣的库是HttpSocket。至于 json 编码和服务响应,请求处理包括响应各种请求、内容类型、解码和编码 json 等。最后,内置的Set实用程序几乎肯定会涵盖您需要的任何数组操作在一两行。
您感兴趣的功能非常基本,并没有太大变化。我敢打赌,您已经找到的许多(相当简单的)解决方案可能仍然有效,可能需要稍作调整。
对于几乎任何基本的服务端点,您可能会创建一个控制器(不是 AppController - 这是应用程序范围的,因此您不能直接调用它)方法,考虑到 Cake 将控制器/动作路由到您的 url:
来自不同应用的蛋糕消费服务如下所示:
http://cakeproject/collect/getInfo
class CollectController extends AppController {
public function getInfo($array = null) {
App::uses('HttpSocket', 'Network/Http');
$http = new HttpSocket();
$http->get('http://jmvcproject/controller/action', $array);
// ...etc.
}
Cake从同一个控制器/动作向不同的应用程序提供服务只是:
public function getInfo($array = null) {
$results = $this->Collect->find('all', $array);
// ...fetch the results
}
或者您可以只循环该数组foreach($this->data as $data) { ...
以删除类名。但是,如果您的数据将包括相关模型等,那么 Set 可能是最通用和最灵活的解决方案。
无论如何,HTH