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

ブログ

Ext.DirectとxFrameworkPXでの認証

Ext.DirectとxFrameworkPXでのシステムで,システム利用前に認証を行うという場合を考えます。

一般的なWebシステムの場合,ユーザー名/パスワードでログインすると,セッションにログイン情報が記録され,その後の処理ではセッションでログイン状況をチェックしてから処理をする。というのが一般的な方法だと思います。

Ext Direct での更新処理

Ext Directでの更新処理をやってみたいと思いました。やっぱりExtJSらしいところで,GridPanel(いや更新ですからEditorGridPanelか)で訂正したデータをサーバーに更新をかけるということになります。

サーバーサイドのxFrameworkPXのモデルに更新用のメソッドを用意して,DirectStoreのapiにそれをセットするのかなと思ったのですが,apiの仕様がいまいちよくわかりません。パラメータの渡し方も。ですので,更新をStoreに任せるのではなくて,違う方法での実現を考えました。

※ その後,勉強の甲斐あって,Storeに任せる方法もわかりました。こちらを参照ください>08.DirectStore でサーバー更新をかける

Ext Direct

サーバーサイドをxFrameworkPXにして,画面デザインはExt Designerでやって,サーバーとのデータのやりとりはExt Directで行おうという計画で勉強&実験中です。

まず,スタッフのリストとグループのリストをMySQLに持って,グループを選択するとグリッドにスタッフがリストされるってのをやってみました。

Ext.Direct と xFrameworkPX のコラボ

 さて,Ext.Direct を xFrameworkPX で使うというところにやっとたどりついた。

前回の資料で

  • xFrameworkPXにはxFrameworkPX_Controller_ExtDirectクラスが存在する。
  • モジュールを作成して、コントローラーに登録するだけでモジュール名でJS側からアクセスできる。
  • サーバーサイドのやりとり(api.phpとかrouter.phpの部分)は、ちゃんとオリジナルで実装して動作確認済。
  • MVCのModel部分をExt側から透過的に利用できるため、開発が高速。

というのがありました。xFrameworkPX_Controller_ExtDirect を継承したコントローラーを使うと,「モジュール名でアクセスできる」ってことですね。モジュールに必要なメソッドを書いてやれば,それをExt.Directで使えるという訳です。ぐっとハードルが低くなります。

Ext.Direct の勉強

参考サイト

参考サイトは,株式会社ゼノフィの小堤一弘さんの発表資料です。そちらににサンプルのありかが書いてあったのでダウンロードしてみました。

http://extdirect.xenophy.net/directsample.zip

動かしてみると,TreePanelと連携,GridPanelとの連携,FormPanelとの連携。どれもちゃんと動作しました。これから,サンプルの内容を見て,自分でExt Directが使えるようになりましょう。(でも,実際にはたぶんサーバーサイドはxFrameworkPXを使うことになるとは思います)

基本的なRPCの使い方の節

APIの設定

APIというのがようわからんかったのですが....

xFrameworkPXを使って見る(3) モジュールの機能

前稿で,モジュールの$this->insert() メソッドについてちらと書いたが,あれはLiveRecordの機能だった。LiveRecordはモジュールのビルトインビヘイビアで,通常のRDBMSに対する様々な処理が実装されているんですね。

xFrameworkPXを使って見る(2) データベース操作

引き続き 「データベースの基本的な操作」のチュートリアルを順番にやってみます。

xFrameworkPX を使ってみる

ExtJSの勉強を始めるに当たり,サーバーサイドは,CakePHPでやろうと思っていたが,xFrameworkPX という和製フレームワークを知り,こちらを勉強してみることにした。勉強初日のメモ

ExtJSでのイベント処理など

 ExtJSのコードを,Ext Designerではき出した後,コンポーネントからのイベントを処理する部分を書かなければなりませんが,はき出されたコードに書き加えていたら,画面デザインの変更のたびに面倒なことになります。

ですから,当然,イベント処理は別ファイルでやることになるんだと思います。デザイン定義部分とは別の場所でイベントを低位議するにはどうしたらよいのでしょうか。

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コンポーネントを入れるととても簡単らしい。

コンテンツ配信