AjaxCFC
昨年、CFAjaxを見て、フレームワークとの整合性が悪いなあーと思っていたら、
CFCベースのAjaxフレームワークが出てきました。
Rob Gondaのブログに行くと、ModelGlueとの連携も紹介してくれています。
Robさん、サンキュ!
これで、GoogleMapsとのマッシュアップが簡単に出来そう!
ajaxCFC for Model-Glue Explained
Ajax.cfcは、ModelGlueで利用可能な汎用modelです。したがって、コントローラで利用可能です。コントローラ内のinitファンクションで初期化し、コントローラ内のvariablesスコープに常駐させます。
<cffunction name="Init" access="Public" returnType="controller" output="false" hint="I build a new SampleController">
<cfargument name="ModelGlue">
<cfscript>
super.Init(arguments.ModelGlue);
variables.echo = createObject("component", "blog.projects.ajaxcfc.examples.modelgluesamples.echo.model.echo");
variables.ajax = createObject("component", "blog.projects.ajaxcfc.examples.modelgluesamples.echo.model.ajax");
</cfscript>
<cfreturn this />
</cffunction>Ajaxのリモートリクエストは、標準的なWebリクエストと同じく、以下のようにフローします。
- ページがAJAXリクエストを発生させる。
- ModelGlueフレームワークによって、イベントが捕捉される。
- ModelGlueのイベントハンドラーがメッセージをブロードキャストする。
- コントローラでメッセージをピックアップする。
- AjaxCFCを使い、onRequestStart内で、メッセージをパースする。
- イベントに応じて他のmodelを利用し、レスポンスデータを作成する。
- 再度AjaxCFCを使い、レスポンスに備える。
- 'ajaxResponse'にレスポンス値をセットし、viewに渡す。
- modelGlue.xmlで、レスポンスを運びJavaScriptのコールバックファンクションに返すviewとしてのajaxResponse.cfmを含める。
ModelGlue+AjaxCFC+ColdspringでGoogleMapsとの連携版を作ってみよう!
コメント