Ext JS に関しては,新しい記事は Sunvisor Lab. ExtJS 別館 にあります。そちらもよろしくお願いいたします。

ExtJSとCakePHPデータやりとり

 CakePHPでのURLは,

 

site.com/コントローラー名/アクション名/パラメータ1/パラメータ2

という形式だから,

ExtJSからデータが欲しいときは,この形式でリクエストする。

それに対して,JSON形式でデータを返すViewでも作れば,CakePHPとExtJSの間でデータのやりとりができそう。

必要なパラメータと一緒にAjax.requestでリクエストする。

ExtJSでは,データストアのHttpProxyでURLを指定してやるとよいらしい。データストアは,ADOでいうDataSetみたいなものか。

cakePHP+ajaxでjsonを扱う - 憂鬱なプログラマの形而上学  

CakePHPからJSONやXMLを返す方法は,Webserviceコンポーネントを入れるととても簡単らしい。

[CakePHP]actionの応答をXMLやjsonに切り替える超簡単な方法 | Ryuzee.com 

たとえばコンボボックスにリストをセットするとき

  1. サーバーのコントローラーに対して,Ajax.requestでデータをリクエストする。
  2. CakePHPがそれに反応してデータをJSONで返す。
  3. 返ってきたJSONデータをコンボボックスのリストにセットする。

という感じか。

  1. まず,ホームではExt.OnReadyでViewPortを描画する。
  2. ViewPortのそれぞれのペインは,コントローラーなどで用意する。
  3. ExtJSのイベントで,CakePHPのコントローラーにURLを投げて画面を更新する。

というような流れになるのかな。CakePHPのビューのほとんどはページをレンダリングするよりも,Ajaxでパーツを渡すとかJSONやXMLdeでデータを渡すような感じになるのかな。

CakePHPのホームってルーティングでコントローラーとアクションが定められていて,そのページが表示される。デフォルトでは,pagesコントローラーのhomeアクション。つまり,pages_controller.homeのonReadyがプログラムの始まりか。

CakePHPサイトでのExtJSの置き場所は,webroot/jsでいいのかな。 そしてコントローラーにvar $helpers = array('Javascript');

 var $helpers = array('Javascript');

と書いて,ビューで

<?php echo $javascript->link('test'); ?>

というふうにする。というけれど,1.3ではJavascriptヘルパーが非推奨になったのじゃなかったか。かわりにHtmlヘルパーのjsメソッドというのがあるとか。マニュアルには,$javascript->link()は $html->script()にと書いてる。だから

<?php echo $html->script('test'); ?>

かな。

 

トラックバック


URL から "-MoIyadayo" を削除してトラックバックを送信してください。
トラックバックは承認後に表示されます。