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
たとえばコンボボックスにリストをセットするとき
- サーバーのコントローラーに対して,Ajax.requestでデータをリクエストする。
- CakePHPがそれに反応してデータをJSONで返す。
- 返ってきたJSONデータをコンボボックスのリストにセットする。
という感じか。
- まず,ホームではExt.OnReadyでViewPortを描画する。
- ViewPortのそれぞれのペインは,コントローラーなどで用意する。
- 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'); ?>
かな。