概要の概要
出来上がったコントローラ見ると、 リクエスト情報の内、isBaanchaとかをみてSaveAndXXXとか 呼び出している。。
のはいいのだけど、
最初のおおまかな流れがつかめない。 気になるのがRPC用のメソッド一覧の取得契機。
ほんの少しだけ見てみた。 もうほんとこまかなロジックはすっ飛ばして 「どこでやってんのかしらね。。」 程度です。
いつものaddProviderはどこ?
まず、 Plugin/Bancha/webroot/js/Bancha.js
initメソッドで
Ext.direct.Manager.addProvider()
しているところがありました。
で、こいつに渡しているのがメソッド一覧のオブジェクトになるから、 上を追うとgetRemoteApiがある これはthis.remoteapi(Bancha.REMOTEAPI)となる。 このBancha.REMOTEAPIを事前にリクエストしておくひつようがあるわけで。
initはonModelReadyでExt.OnReadyをコールし、そのなかでinitとされている。
つまり
Bancha.onModelReady => Ext.OnReady => init => addProvider
となることはわかった。
Bancha.REMOTE_APIはどこで生成?
上記で事前に取得しておくBancha.REMOTEAPIについてざっと見てみる。 そもそもこのBancha.REMOTEAPIという命名はWikiにもあるように Config設定にある(grep結果)
/UserDir/banchatest/public_html/app/Plugin/Bancha/Config/bootstrap.php|23 col 30| Configure::write('Bancha.Api.remoteApiNamespace','Bancha.REMOTE_API');
で、この設定が利用されているのは
/app/Plugin/Bancha/Controller/BanchaController.php|86 col 78| $this->response->body(sprintf("Ext.ns('Bancha');\n%s=%s", Configure::read('Bancha.Api.remoteApiNamespace'), json_encode($api)));
のこの部分。
で/app/Plugin/Bancha/Lib/Bancha/BanchaApi.php でモデル一覧取得して、 モデル名を引数にコントローラへアクセスしてCrud用のAction名を取得している。
このあたりはCake特有の命名規則でルーティングしてクラス名をつくりだしたりしているので 深追いせずに次行っちゃいます。
つまり、
モデル名一覧 => モデル名からコントローラ => コントローラのCrud用メソッド一覧。
それを連想配列でredirect。
Ext.ns('Bancha'); Bancha.REMOTEAPI = jsonencodeした上記連想配列。
をredirect->bodyしているわけですね。
概要だけでも少し追うと安心できました。
そのBancha.REMOTE_APIはいつのリクエストで生成?
で、 このBancha.REMOTE_APIは、じゃぁ、いつのリクエストで生成されて ロードされているか。となるんだけど、、、 これは、bancha-api.jsを呼んで、 Banchaのルーティング設定でBanchaControllerのindexアクションが呼び出される 設定になってるっぽい(routes.php)。。(これはちょっと迷子になった。)
hoge.html内で
<!-- include Bancha and the remote API -->
<script type="text/javascript" src="Bancha/js/Bancha.js"></script>
※ここでBancha利用用のBanchaクラス群ロード
<script type="text/javascript" src="bancha-api.js"></script>
※これでサーバサイドでルーティングされてBanchaControllerのindexアクションコール
返却でurl(RPC時のルーティングするurl)やメソッド一覧のJSON返却
このあとは各App用JSでOnModelReadyを実装してそのなかでaddProvider
ということはこのコールバック内に今までのエントリポイントとなる
メソッドを設置することになるでしょうかね。。
次は疎通。疎通~。
現状のフォルダ構成
▾ banchatest/
▾ public_html/
▾ app/
▸ Config/
▸ Console/
▸ Controller/
▸ Lib/
▸ Locale/
▸ Model/
▾ Plugin/
▾ Bancha/
▸ _app/
▾ Config/
bancha-dispatcher-bootstrap.php
bootstrap.php
routes.php・・・・・・・・ここ
▸ Console/
▾ Controller/
BanchaAppController.php
BanchaController.php・・・・・・・・ここ
▾ Lib/
▾ Bancha/
▸ Exception/
▸ ExceptionHandler/
▸ Network/
▸ Routing/
BanchaApi.php・・・・・・・・ここ
▸ Model/
▸ Test/
▾ webroot/
▾ js/
Bancha.js*・・・・・・・・ここ
setup-check.html
.gitignore
gpl-v3.txt
license.txt
README.md
UpdateFromBeta3.txt
VERSION.properties*
empty*
▸ Test/
▸ tmp/
▸ Vendor/
▸ View/
▸ webroot/
.htaccess*
index.php*
▸ lib/
▾ plugins/
empty*
▸ vendors/
.gitignore*
.htaccess*
.travis.yml*
build.properties*
build.xml*
index.php*
README*
0 件のコメント:
コメントを投稿