cfparam

説明

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

履歴

ColdFusion 10 Beta:maxLength 属性が追加されました。

ColdFusion MX 7:

  • minmax、および pattern の各属性が追加されました。

  • type 属性の値として、creditcardemaileurodatefloatintegerrangeregexregular_expressionssnsocial_security_numbertimeURLUSdateXML、および zipcode が追加されました。

カテゴリ

変数操作タグ

シンタックス

<cfparam  
    name = "parameter name" 
    default = "value" 
    max = "value" 
    maxLength = "number" 
    min = "value" 
    pattern = "regular expression" 
    type = "data_type">

関連項目

cfcookiecfregistrycfsavecontentcfschedulecfset、『ColdFusion アプリケーションの開発』のValidating data with the IsValid function and the cfparam tag

属性

属性

必須 / オプション

デフォルト

説明

name

必須

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

default

オプション

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

max

オプション

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

maxLength

オプション

email、url および string の最大文字長を指定するために使用します。

min

オプション

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

pattern

オプション

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

type

オプション

any

有効なデータの形式です。次のいずれかです。検証アルゴリズムの詳細については、『ColdFusion アプリケーションの開発』のValidating DataValidating form data using hidden fieldsを参照してください。

  • any: 任意の型の値です。

  • array: 値の配列です。

  • binary: バイナリ値です。

  • boolean: ブール値です (yes、no、true、false、または数値)。

  • creditcard: mod10 アルゴリズムに準拠する 13 ~ 16 桁の数値です。

  • date または time: 日付時刻値です。

  • email: 有効な電子メールアドレスです。

  • eurodate: 日付時刻値です。いずれの日付の部分も dd/mm/yy の形式でなければなりません。区切り文字として /、-、または . を使用できます。

  • float または 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 進数です。CreateUUIDを参照してください。

  • USdate: mm/dd/yy 形式の米国の日付です。日および月は 1 ~ 2 桁、年は 1 ~ 4 桁です。

  • variableName: ColdFusion 変数のネーミング規則に従った形式の文字列です。

  • xml: XML オブジェクトと XML 文字列です。

  • zipcode: 米国の 5 桁または 9 桁形式の郵便番号です。

使用方法

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

  • 必要な変数が存在するかどうかをテストするには、name 属性のみを指定してこのタグを使用します。変数が存在しない場合、ColdFusion ではページの処理が中止され、エラーが返されます。

  • 必要な変数が存在しているかどうか、およびそれが指定した型であることをテストするには、name 属性および type 属性を指定してこのタグを使用します。変数が存在しないか、変数の値が指定した型でない場合は、エラーが返されます。

  • 変数のデフォルト値を設定するには、name 属性および default 属性を指定してこのタグを使用します。変数が存在しない場合は、変数が作成され、default 属性の値に設定されます。変数が存在する場合は、処理が継続されます。値は変更されません。

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

パフォーマンスを向上させるには、CFC メソッドを含めて、ColdFusion 関数に cfparam タグを使用しないようにします。代わりに、CFML ページの本文にcfparam タグを配置します。

<!--- This example shows how to use CFPARAM to define default values for page variables. ---> 
<cfparam name = "storeTempVar" default = "my default value"> 
<cfparam name = "tempVar" default = "my default value"> 
 
<!--- Check if form.tempVar was passed. ---> 
<cfif IsDefined("form.tempVar") is "True"> 
    <!--- Check if form.tempVar is not blank. ---> 
    <cfif form.tempVar is not ""> 
        <!--- If not, set tempVar to value of form.tempVar ---> 
        <cfset tempVar = form.tempVar> 
    </cfif> 
</cfif> 
 
<body> 
<h3>cfparam Example</h3> 
<p>cfparam is used to set default values so that a developer does not have to  
check for the existence of a variable using a function like IsDefined.</p> 
 
<p>The default value of our tempVar is "<cfoutput>#StoreTempVar# </cfoutput>"</p> 
 
<!--- Check if tempVar is still the same as StoreTempVar and that tempVar is not blank. ---> 
<cfif tempVar is not #StoreTempVar# 
    and tempVar is not ""> 
        <h3>The value of tempVar has changed: the new value is 
        <cfoutput>#tempVar#</cfoutput></h3> 
</cfif> 
 
<p> 
<form action = "cfparam.cfm" method = "post"> 
    Type in a new value for tempVar, and hit submit:<br> 
    <input type = "Text" name = "tempVar"> 
    <input type = "Submit" name = "" value = "submit"> 
</form>