2011-07-11 6 views
2

私たちは、2つのMVCベースのフレームワークを使用して大学プロジェクト用のRIAを構築しようとしています。クライアント側のJS(Ext JS 4)とサーバ側のPHP(恐らくYII)。RIA開発:2つのMVCフレームワーク(クライアント<->サーバ)の共存

私たちは初期段階でExt JSを学んでいますが、チュートリアルでは、2つのMVCフレームワークをどのように共存させ、一緒に働かせることができるかを把握することを奨励しています。

今、私は、JSフレームワークが異なる.phpを1つのタスクとして呼び出すいくつかのテストアプリケーションをプログラミングしています。

私は以下のスキームを使用して考えていました。サーバー側はAPIとして動作します。両方のシステムを2つのビューで接続します。クライアント側からクライアント側からサーバーオブジェクトおよびそのメンバーへのサーバー側への呼び出しを、例えば、 jsonをサーバービューとして機能する一意の.phpファイルに変換すると、これらの呼び出しは、内部でMVC形式で内部的に処理され、適切なデータをクライアントに返すように処理されます。

私はMVCアーキテクチャを扱っている経験がないので、私の言うことが意味をなさないかどうかはわかりません。

私はこの作業を行う正しい方法があるはずです。任意の提案やポインタをしてください?

ありがとうございます。

答えて

1

実際に私はあなたのようなプロジェクトに就いています。私はサーバー側ではなくyiiであるが、原則は同じです。サーバサイドのビューでは、extjs jsのロードをセットアップする必要がありますfiles.Thisはそれのための私のPHPコードです:

<?php 
// Initialize Extjs on development ENV 
if (APPLICATION_ENV == 'development') { 
$this->headLink()->prependStylesheet ('./javascript/extjs/resources/css/ext- all-  debug.css'); 
$this->headScript()->prependFile ('./javascript/extjs/ext-debug.js'); 
} // Initialize Extjs on production ENV 
else { 
$this->headLink()->appendStylesheet ('./javascript/extjs/resources/css/ext- all.css'); 
$this->headScript()->prependFile ('./javascript/extjs/ext.js'); 
} 

// Load EXTJS MVC Startup from the public folder 
$this->headScript()->appendFile ('./app.js'); 

// Output aggregated css & js files 
echo $this->headLink(); 
echo $this->headScript(); 
?> 

私は私がクライアント側で作成するなど、あらゆる形式/グリッドあたりのサーバー側に一方のコントローラ(PHPファイル)を作成していると、彼らは簡単に相互に作用しますJSONを使用します。たとえば、extjsとフォームs submit url would be the path to your server side controller and you code process them using $_POST[fields]; You should disable view for controllers which send json data. Understanding MVC takes time and practice. What i can suggest you is to first choose your desired php framework,study itのMVCにフォームを作成し、extjsを簡単に追加します。

1

あなたの考えは近いですが、あなたはそのアーキテクチャーのMVCの「コントローラー」部分を売っています。

クライアントビューからサーバーオブジェクトへの呼び出しが正しく行われます。しかし、その呼び出しを別のPHPファイルにする必要はありません。 Yiiはルーティングをサポートしています。つまり、同じコントローラから別のメソッドを呼び出すことができます。例えば、あなたのコントローラーが基本的なCRUD操作(あなたが慣れていない場合に備えて、作成、読み取り、更新、削除)を担当しているとします。あなたは、1つのコントローラで各操作に1つの方法を使用します。これらの呼び出しのすべてがRiaControllerしようとしていることを

注:お使いのAPIは次のようになります。これは、Yiiのrouting engineによって処理される必要があります。

ビュー内のデータを返すことは、必要以上の作業です。リクエストを行うためにjavascriptを使用しているので、そのjavascriptがHTMLビューの代わりにJSONまたはXMLを受け取った方が簡単です。YiiはPHPデータをJSONに変換できるJSON classを持っています。私はそれを調べることをお勧めします。

RIAControllerの各メソッドの最後には、CJSONの出力を返すことになるでしょう(例:$this->renderText(CJSON::encode($myoutput));)。クライアント側で作業するために使用するのはこの出力です。

関連する問題