2008/03/12

[coldfusion]RequestVar function作成

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を作っていきたいと思います。

2 件のコメント:

  1. 初めて、coldfusionにて開発を行っていて
    変数の扱いが解らなくて困っていました。
    とても助かりました。
    有難うございました。

    返信削除
  2. cfparamタグは便利です

    返信削除