【cfparam】変数が存在しない場合はデフォルト値をセット | うたらぼ(アメブロ)
2009-05-26 20:08:07

【cfparam】変数が存在しない場合はデフォルト値をセット

テーマ:ColdFusionのタグ
 以下のようなプログラムがあります。

【test1.cfm】
01: <cfoutput>
02: チェックした数値の合計
03: <form action="test2.cfm" method="post">
04: <cfloop index="idx" from="1" to="10">
05:     <input type="checkbox" name="chk" value="#idx#">#idx#<br>
06: </cfloop>
07: <input type="submit" value="send">
08: </form>
09: </cfoutput>

【test2.cfm】
01: <cfset gokei = 0>
02: <cfloop index="idx" list="#form.chk#">
03:     <cfset gokei = gokei + idx>
04: </cfloop>
05: <cfoutput>
06: 合計は、#gokei#です。
07: </cfoutput>


test1.cfmで1と3をチェックした場合、form.chkの値は

1,3

となります。
全然チェックしないでsendボタンを押した場合、form.chkの値はないですが、
問題は、form.chkの変数すら生成されていません。
変数がないので、エラーとなってしまいます。
変数がなかったら変数を生成するようにしないといけません。

変数の存在をチェックし、ない場合にヌルをセットする場合は、

01: <cfif not isDefined("form.chk")>
02:     <cfset form.chk = "">
03: </cfif>

または、

01: <cfif not StructKeyExists(form, "chk")>
02:     <cfset form.chk = "">
03: </cfif>

1行で書く場合は、

01: <cfparam name="form.chk" default="">

個人的にもcfparamはよく使っています。


cfparamのドキュメントはこちらです(cf7)。

うたらぼさんをフォロー

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントする]

Ameba人気のブログ

Amebaトピックス