ども、小堤です。
さて、バタバタしているものの、地道にxFrameworkPX 3.5仕上げには入っています。
で、タイトルの「xFrameworkPX_Controller_ExtDirect」について、まぁまだ出してもいないので意味ないんですが、できたの盛り上がったので書いてみます。
xFrameworkPX 3.5は、CakePHPっぽくなるよっていう話はしたかもしれませんね。ぽくなるだけで、同じではありません、当たり前ですが。ですが、モジュール(Model)っていうのは、同じようにあります。このモジュールのメソッドをExt.Directで透過的に呼び出すことができるようになります。
具体的なコードは次のようになります。
コントローラーコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
< ?php class extapi extends xFrameworkPX_Controller_ExtDirect { protected $arrModule = array( 'TreePanel' => array( // {{{ コネクション名設定 'conn' => 'default' // }}} ) ); } ?> |
モジュールコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
< ?php class TreePanel extends xFrameworkPX_Model { public function getTree( $id ) { $out = array(); if($id == "root"){ for($i = 1; $i <= 5; ++$i){ array_push($out, array( 'id'=>'n' . $i, 'text'=>'Node ' . $i, 'leaf'=>false )); } }else if(strlen($id) == 2){ $num = substr($id, 1); for($i = 1; $i < = 5; ++$i){ array_push($out, array( 'id'=>$id . $i, 'text'=>'Node ' . $num . '.' . $i, 'leaf'=>true )); } } return $out; } } ?> |
JSコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Ext.onReady( function() { Ext.Direct.addProvider(Ext.app.REMOTING_API); var tree = new Ext.tree.TreePanel({ width: 400, height: 400, autoScroll: true, renderTo: Ext.getBody(), root: { id: 'root', text: 'Root' }, loader: new Ext.tree.TreeLoader({ directFn: TreePanel.getTree }), fbar: [{ text: 'Reload root', handler: function(){ tree.getRootNode().reload(); } }] }); }); |
サンプルのDirect Treeと同じ動きをします。
これのうれしいところは、フレームワーク内の記述、データベースアクセスなどで結果を配列にするだけでExt.Directが実装できちゃうところです。
モジュールのバリデーションで、Ext.Directを通して入力チェックも一元化できるところです。すごくないですか?(じぶんでいうなってな、笑)
xFrameworkPX 3.5 α版は、地道に準備しています。
来週の勉強会は、別なことやるのであれですが・・・その次くらいにExt.Directやるかな?やれるかな?元気あるかな・・・応援して(>_<)
さて、しあげちゃおー。
xFrameworkPX_Controller_ExtDirect