object browserを作っていて、よく、IsDefined関数を使うのですが、毎回、毎回、
<CFIF IsDeined("test")> <CFSET hoge = test> </CFIF> |
と書いていくのが、メンドイので、簡単な評価関数を作って、手間を省くようにしました。
評価関数は、下のように実装。
<CFFUNCTION name="RequestVar"> <CFARGUMENT name="aVar" type="variableName" required="yes"> <CFSCRIPT> var cfv_var = ""; </CFSCRIPT> <CFIF IsDefined("#aVar#")> <CFSET cfv_var = Evaluate("#aVar#")> </CFIF> <CFRETURN cfv_var> </CFFUNCTION> |
この関数を使うことによって、変数が定義されていようがなかろうが、心配する必要がなくなりました。
丁度、ASPでいうところの、Request.Form()に相当する関数で、変数が定義されていれば、その値を返し、定義されていない場合は、空を返すというもの。
変数に値がある場合と、ない場合で簡単な例を書いてみました。
まずは、値がある場合。
<!--- tmpは、3を返す ---> <CFSET Form.test = "3"> <CFSET tmp = RequestVar("Form.test")> <CFOUTPUT>#tmp#</CFOUTPUT> |
次は、変数が宣言されていない場合
<!--- 定義していないsample変数 ---> <CFSET tmp = RequestVar("sample")> <!--- ""を返す ---> <CFOUTPUT>#tmp#</CFOUTPUT> |
今回、作ったファンクションを、RelatedwithVariables.cfmで、coldfusion-addonにアップロードしました。
勢いよくリファレンスもwikiのHomeRelatedwithVariablesに書いちゃった。
これを使って、ドンドンobject browserを作っていきたいと思います。
初めて、coldfusionにて開発を行っていて
返信削除変数の扱いが解らなくて困っていました。
とても助かりました。
有難うございました。
cfparamタグは便利です
返信削除