CFPARAM  
説明

パラメータ (変数) が存在するかどうかをテストし、そのデータを検証し、デフォルト値が割り当てられていない場合は必要に応じて割り当てます。

 
カテゴリ

変数操作タグ

 
シンタックス
<cfparam
   name = "param_name"
   type = "data_type"
   default = "value"
max = "value"
min = "value"
pattern = "regular expression">
 
関連項目

cfcookie、cfregistry、cfsavecontent、cfschedule、cfset、『ColdFusion MX 開発ガイド』の第28章の「データの検証」 の「IsValid 関数および cfparam タグによるデータの検証」

 
ヒストリ

ColdFusion MX 7:

  • min、max、および pattern の各属性が追加されました。
  • type 属性の creditcard、email、eurodate、float、integer、range、regex、regular_expression、ssn、social_security_number、time、URL、USdate、および zipcode の各属性が追加されました。

 
使用方法

このタグを使用すると、次のテストを実行できます。

  • 必要な変数が存在するかどうかをテストするには、このタグを name 属性のみと共に使用します。変数が存在しない場合、ColdFusion MX ではページの処理が中止され、エラーが返されます。
  • 必要な変数が存在しているかどうか、およびそれが指定したタイプであることをテストするには、このタグを name 属性および type 属性と共に使用します。変数が存在しないか、変数の値が指定したタイプでない場合は、エラーが返されます。
  • 変数のデフォルト値を設定するには、このタグを name 属性および default 属性と共に使用します。変数が存在しない場合は、変数が作成され、default 属性の値に設定されます。変数が存在する場合は、処理が継続されます。値は変更されません。

type 属性に variableName を指定した場合、パラメータの値は ColdFusion 変数ネーミング規則に沿った文字列にする必要があります。つまり、文字、アンダースコア (_)、または Unicode 通貨記号で始まり、文字、数字、アンダースコア、ピリオド、Unicode 通貨記号のみを含む文字列を使用する必要があります。ColdFusion は、そのパラメータ値が既存の ColdFusion 変数に対応するかどうかをチェックしません。

ヒント: パフォーマンスを向上させるには、CFC メソッドを含めて、ColdFusion 関数に cfparam タグを使用しないようにします。代わりに、CFML ページの本文に cfparam タグを配置します。
 
<!--- この例では、CFPARAM を使用してページの変数のデフォルト値を定義する方法を
   示します。 --------> 
<cfparam name = "storeTempVar" default = "my default value">
<cfparam name = "tempVar" default = "my default value">

<!--- form.tempVar が渡されたかどうかをチェックします。 --->
<cfif IsDefined("form.tempVar") is "True">
   <!--- form.tempVar が空白でないかどうかをチェックします。 --->
   <cfif form.tempVar is not "">
      <!--- form.tempVar が空白でなければ、tempVar を form.tempVar の値に設定します。 --->
      <cfset tempVar = form.tempVar>
   </cfif>
</cfif>

<body>
<h3>cfparam の例</h3>
<p>IsDefined などの関数を使用して開発者が変数の存在を確認する 
必要がないようにするには、cfparam を使用してデフォルト値を設定します。

<p>tempVar のデフォルト値は、 
   "<cfoutput>#StoreTempVar# </cfoutput>" です。

<!--- tempVar がまだ StoreTempVar と同じ値であり、
tempVar が空白でないことをチェック --->
<cfif tempVar is not #StoreTempVar#
   and tempVar is not "">
      <h3>tempVar の値が変更されました。新しい値は
      <cfoutput>#tempVar#</cfoutput></h3>
</cfif>

<p>
<form action = "cfparam.cfm" method = "post">
   tempVar の新しい値を入力し、[送信] をクリックしてください。<br>
   <input type = "Text" name = "tempVar">
   <input type = "Submit" name = "" value = "送信">
</form>
NAME  
  必須
 

テストするパラメータ (変数) の名前です ("Client.Email " や "Cookie.BackgroundColor " など)。省略すると、パラメータが存在しない場合はエラーが発生します。

TYPE  
  オプション
 
Default value: "any"

有効なデータの形式です。次のいずれかです。検証アルゴリズムに関する情報の詳細については、『ColdFusion MX 開発ガイド』の第28章の「データの検証」 の「非表示フィールドによるフォームデータの検証」を参照してください。

  • any: 任意のタイプの値
  • array: 値の配列
  • binary: バイナリ値
  • boolean: ブール値 (yes、no、true、false、または数値)
  • creditcard: mod10 アルゴリズムに準拠する 13 ~ 16 桁の数値です
  • date or time: 日付時刻値
  • email: 有効な電子メールアドレス
  • eurodate: 日付時刻値いずれの日付の部分も dd/mm/yy の形式でなければなりません。この形式では、区切り文字として /、-、または . を使用できます。
  • float or numeric: 数値
  • guid: Universally Unique Identifier (ユニバーサル固有識別子) です。形式は "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" で、`X' は 16 進数です。
  • integer: 整数
  • query: クエリーオブジェクト
  • range: 数値の範囲です。min 属性と max 属性で指定します。
  • regex または regular_expression: 入力内容を pattern 属性と照合します。
  • ssn または social_security_number: 米国の社会保障番号
  • string: 文字列値または 1 つの文字
  • struct: 構造体
  • telephone: 米国の標準の電話番号
  • URL: http、https、ftp、file、mailto、または news の URL
  • UUID: ColdFusion Universally Unique Identifier (ユニバーサル固有識別子)。形式は `XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXX' で、`X' は 16 進数です。108ページのCreateUUIDを参照してください。
  • USdate: mm/dd/yy 形式の米国の日付。日および月は 1 ~ 2 桁、年は 1 ~ 4 桁です。
  • variableName: ColdFusion 変数のネーミング規則に従った形式の文字列
  • xml: XML オブジェクトと XML 文字列
  • zipcode: 米国の 5 桁または 9 桁形式の郵便番号
DEFAULT  
  オプション
 

パラメータが存在しない場合に、パラメータに設定する値です。パラメータが存在する場合でも、default 属性に対して任意の式が評価されます。パラメータが存在する場合、式の結果は割り当てられません。ただし、その場合でも式が副次的な効果を持つときは、その効果は発生します。

MAX  
  オプション
 

最大有効値です。range の検証の場合にのみ使用します。

MIN  
  オプション
 

最小有効値です。range の検証の場合にのみ使用します。

PATTERN  
  オプション
 

パラメータ表記の基準となる JavaScript 正規表現です。regex または regular_expression の検証の場合にのみ使用します。