OK、あなたがやろうとしていることを 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ユーティリティは、必要な配列操作をほぼ確実にカバーします。一行か二行で。
あなたが興味を持っている機能はかなり基本的なもので、あまり変わっていません。あなたがすでに見つけた (かなり単純な) 解決策の多くは、おそらく少し調整するだけで、おそらくまだ機能するでしょう。
ほとんどすべての基本的なサービス エンドポイントでは、Cake がコントローラー/アクションを URL にルーティングすることを考慮して、おそらくコントローラー (AppController ではなく、アプリケーション全体のため、直接呼び出すことはできません) メソッドを作成します。
別のアプリからのケーキ消費サービスは次のようになります。
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.
}
同じコントローラー/アクションから別のアプリにサービスを提供するケーキは、次のようになります。
public function getInfo($array = null) {
$results = $this->Collect->find('all', $array);
// ...fetch the results
}
foreach($this->data as $data) { ...
または、その配列をループしてクラス名を削除することもできます。ただし、データに関連するモデルなどが含まれる場合、Set はおそらく最も汎用性が高く回復力のあるソリューションです。
とにかくHTH