付録 B - バリデータ
はじめに
symfony フォームフレームワークはたくさんの便利なバリデータを搭載しています。
これらのバリデータはたいていのプロジェクトの共通のニーズをカバーします。
この章では symfony に搭載されるデフォルトのフォームバリデータを説明します。
sfPropelPlugin
と sfDoctrinePlugin
プラグインにもバリデータが含まれています。
これらのプラグインはコアチームによってサポートされており、とても便利なバリデータを含みます。
TIP symfony MVC フレームワークを使わない場合でも、プロジェクトのどこかの
validator/
ディレクトリに設置することで、sfFormExtraPlugin
、sfPropelPlugin
とsfDoctrinePlugin
プラグインで定義されたバリデータを使うことができます。
それぞれのバリデータの詳細内容に飛び込む前に、バリデータが共通に持つ機能を見てみましょう。
sfValidatorBase
基底クラス
symfonyのすべてのバリデータは sfValidator
基底クラスを継承します。
このクラスはすべてのバリデータで利用可能なデフォルト機能を提供します。
バリデータは2つの目標: 汚染されている値をクリーンにすることとバリデートすることを持ちます。
バリデータを作るとき、オプションの引数としてオプションとエラーメッセージを渡すことができます:
[php]
$v = new sfValidatorString(
array('required' => true),
array('required' => 'This value is required.')
);
オプションとメッセージは setOptions()
と setMessages()
メ ソッドを使うことでも設定できます:
[php]
$v = new sfValidatorString();
$v->setOptions(array('required' => true));
$v->setMessages(array('required' => 'This value is required.'));
setOption()
と setMessage()
メソッドによって個別のオプションもしくはエラーメッセージを設定できます:
[php]
$v = new sfValidatorString();
$v->setOption('required', true);
$v->setMessage('required', 'This value is required.');
汚染されている値は clean()
メソッドを呼び出すことでバリデートできます:
[php]
$cleaned = $v->clean('name', 'value', array('class' => 'foo'));
clean()
メソッドは引数として汚染されている値を受け取りクリーンな値を返します。
バリデーションエラーが起きるとき、sfValidatorError
が投げられます。
NOTE バリデータはステートレスなので、単独のバリデータインスタンスは望む数だけ入力値をバリデートできることを意味します。
sfValidatorBase
によって定義されるデフォルトオプションは次のとおりです:
| オプション | エラー | 説明
| ------------- | ---------- | -----------------------------------------------------------------------------
| required
| required
| 値が必須の場合は true
、そうでなければ false
(デフォルトは true
)
| trim
| n/a | 値がトリムされなければならない場合は true
、そうでなければ false
(デフォルトは false
)
| empty_value
| n/a | 値が必須ではないときに返される空の値
sfValidatorBase
によって定義されるデフォルトのエラーメッセージは次のとおりです:
| エラー | 説明
| ---------- | -------------------------------------------------------------------------------------
| required
| 汚染されている値が空で必須であるときに使われるエラーメッセージ (デフォルトは Required.
)。
| invalid
| エラーが起きるときに一般的なエラーメッセージ (デフォルトは Invalid.
)。
setDefaultMessage()
メソッドを呼び出すことで required
と invalid
エラーメッセージに使われるデフォルトの文字列を変更できます:
[php]
public function setup()
{
sfValidatorBase::setDefaultMessage('required', 'This value is required.');
sfValidatorBase::setDefaultMessage('invalid', 'This value is invalid.');
parent::setup();
}
エラーメッセージはプレースホルダを持つことができます。
プレースホルダは %
で囲まれた文字列です。
実行時にプレースホルダは置き換えされます。
すべてのエラーメッセージは %value%
プレースホルダで汚染されている値にアクセスできる権限を持ちます。
それぞれのエラーメッセージは特定のプレースホルダも定義できます。
NOTE 次のセクションでは、デフォルトの
%value%
プレースホルダは常に利用可能ではないので、 言及されません。
バリデータの中には汚染されている値によって使用される文字集合(キャラクタセット)を知る必要があるものがあります。
デフォルトの文字集合は UTF-8
ですが、setCharset()
メソッドを呼び出すことで設定できます:
[php]
sfValidatorBase::setCharset('ISO-8859-1');
NOTE symfony MVC フレームワークで symfony のバリデータを使う場合、
settings.yml
の charset に従って文字集合は自動的に設定されます。
バリデータスキーマ
バリデータスキーマは1つもしくは複数の他のバリデータ用のラッパーバリデータです。
エラーが起きるとき、バリデータスキーマは sfValidatorErrorSchema
例外を投げます。
次のセクションでは、バリデータは複数のカテゴリに再分類されます。
バリデータ
sfValidatorString
sfValidatorRegex
sfValidatorEmail
sfValidatorUrl
sfValidatorInteger
sfValidatorNumber
sfValidatorBoolean
sfValidatorChoice
sfValidatorPass
sfValidatorCallback
sfValidatorDate
sfValidatorTime
sfValidatorDateTime
sfValidatorDateRange
sfValidatorFile
sfValidatorAnd
sfValidatorOr
sfValidatorSchema
sfValidatorSchemaCompare
sfValidatorSchemaFilter
sfValidatorI18nChoiceCountry
sfValidatorI18nChoiceLanguage
sfValidatorI18nTimezone
sfValidatorPropelChoice
sfValidatorPropelUnique
sfValidatorDoctrineChoice
sfValidatorDoctrineUnique
シンプルなバリデータ
sfValidatorString
スキーマバリデータ: No
sfValidatorString
バリデータは文字列をバリデートして汚染されている値を文字列に変換します。
| オプション | エラー | 説明
| ------------ | ------------ | ------------------
| max_length
| max_length
| 文字列の最長の長さ
| min_length
| min_length
| 文字列の最短の長さ
| エラー | プレースホルダ | デフォルト値
| ------------ | ---------------- | ------------------------------------------------------
| max_length
| max_length
| "%value%" is too long (%maxlength% characters max).
| min_length
| min_length
| "%value%" is too short (%minlength% characters min).
CAUTION このバリデータを正しく動作させるには
mb_string
エクステンションをインストールすることが必須です。 インストールされていれば、文字列の長さはmb_strlen()
関数で算出されます; インストールされていなければstrlen()
関数が使われますが、文字列の中に ASCII 文字ではないものがある場合、本当の文字列の長さは返されません。
sfValidatorRegex
スキーマバリデータ: No
sfValidatorRegex
バリデータは正規表現に対して文字列をバリデートします。
| オプション| エラー | 説明
| --------- | --------- | ------------------------
| pattern
| invalid
| PCRE の正規表現もしくは、正規表現を返す sfCallable
のインスタンス
| must_match
| invalid
| false
がセットされている場合、正規表現はパスするバリデータにマッチしません。
sfValidatorEmail
スキーマバリデータ: No
sfValidatorEmail
バリデータはEメールをバリデートできます。
このバリデータは sfValidatorRegex
を継承します。
sfValidatorUrl
スキーマバリデータ: No
sfValidatorUrl
バリデータは HTTP と FTP URLをバリデートできます。
これは sfValidatorRegex
を継承します。
| オプション | エラー | 説明
| ----------- | --------- | -----------
| protocols
| invalid
| 許可されるプロトコル。デフォルトは array('http', 'https', 'ftp', 'ftps')
sfValidatorInteger
スキーマバリデータ: No
sfValidatorInteger
バリデータは整数をバリデートして汚染されている値を整数に変換します。
| オプション | エラー | 説明
| --------- | ------ | -------------------------
| max
| max
| 受け入れられる最大の整数
| min
| min
| 受け入れられる最小の整数
| エラー | プレースホルダ | デフォルト値
| ------ | ---------------- | -------------------------------------
| max
| max
| "%value%" must be less than %max%.
| min
| min
| "%value%" must be greater than %min%.
デフォルトの invalid
エラーメッセージは "%value%" is not an integer.
です。
sfValidatorNumber
スキーマバリデータ: No
sfValidatorNumber
バリデータは数をバリデートし (PHP が floatval()
関数で理解できる文字列)
汚染されている値を浮動小数に変換します。
| オプション | エラー | 説明
| --------- | ------ | ---------------------
| max
| max
| 受け入れられる最大数
| min
| min
| 受け入れられる最小数
| エラー | プレースホルダ | デフォルト値
| ------ | ---------------- | -------------------------------------
| max
| max
| "%value%" must be less than %max%.
| min
| min
| "%value%" must be greater than %min%.
デフォルトの invalid
エラーメッセージは "%value%" is not a number.
です。
sfValidatorBoolean
スキーマバリデータ: No
sfValidatorBoolean
バリデータブール値をバリデートして true
もしくは false
のどちらかを返します。
| オプション | エラー| 説明
| ------------- | ----- | ---------------------------------------------------------------------
| true_values
| n/a | true の値のリスト (デフォルト: true
, t
, yes
, y
, on
, 1
)
| false_values
| n/a | false の値のリスト (デフォルト: false
, f
, no
, n
, off
, 0
)
sfValidatorChoice
スキーマバリデータ: No
sfValidatorChoice
バリデータは汚染されている値が期待する値のリストの間に収まっているかバリデートします。
| オプション | エラー| 説明
| ---------- | ----- | ----------------------------------------------------
| choices
| n/a | 期待される値の配列(必須)
| multiple
| n/a | selectタグが複数の値を許可しなければならない場合はtrue
| min
| n/a | 選ばれる必要のある値の最小値 (multiple
の値が true である場合)
| max
| n/a | 選ばれる必要のある値の最大値 (multiple
の値が true である場合)
NOTE 比較は汚染されている値が文字列にキャストされた後に行われます。
sfValidatorPass
スキーマバリデータ: No
sfValidatorPass
バリデータは何もしないバリデータで汚染されている値をそのまま返します。
sfValidatorCallback
スキーマバリデータ: No
sfValidatorCallback
バリデータは実際のバリデーション作業を PHP コールバックに委譲します。
コールバックは現在のバリデータインスタンスに、(arguments
オプションから) 汚染されている値と引数の配列は引数として渡されます:
[php]
function constant_validator_callback($validator, $value, $arguments)
{
if ($value != $arguments['constant'])
{
throw new sfValidatorError($validator, 'invalid');
}
return $value;
}
$v = new sfValidatorCallback(array(
'callback' => 'constant_validator_callback',
'arguments' => array('constant' => 'foo'),
));
| オプション | エラー| 説明
| ----------- | ----- | ---------------------------
| callback
| n/a | 有効な PHP コールバック(必須)
| arguments
| n/a | コールバックに渡す引数の配列
日付バリデータ
sfValidatorDate
スキーマバリデータ: No
sfValidatorDate
は日付と時間の組をバリデートします(日付と時間の組は with_time
オプションをセットすることでサポートされます)。
日付フォーマットをバリデートすることとは別に、最大と最小の有効な日付を強制できます。
バリデータはいくつかの入力タイプを受け取ります:
- 次のキーで構成される配列:
year
、month
、day
、hour
、minute
とsecond
- 提供されるのであれば
date_format
正規表現にマッチする文字列 (たとえば~(?P<day>\d{2})/(?P<month>\d{2})/(?P<year>\d{4})~
) - PHP の
strtotime()
関数によって解析できる文字列 - タイムスタンプを表す整数
date_output
もしくは datetime_output
の書式を適用することで汚染されている値は日付に変換されます。
| オプション | エラー | 説明
| ------------------------- | ------------ | --------------------------------------------------------------
| date_format
| bad_format
| 日付がマッチしなければならない正規表現。正規表現は (?P<year>)
のような名前つきサブパターンを使わなければならないことにご注意ください。
| with_time
| n/a | バリデータが時間を返さなければならないのであれば true
、そうでなければ false
| date_output
| n/a | 日付を返す際に使う書式 (デフォルトは Y-m-d
)
| datetime_output
| n/a | 日付と時間の組を返す際に使う書式 (デフォルトは Y-m-d H:i:s
)
| date_format_error
| n/a | bad_format
エラーに対してエラーを表示する際に使う日付書式 (use date_format
if not provided)
| max
| max
| 許容される最大の日付 (タイムスタンプ)
| min
| min
| 許容される最小の日付 (タイムスタンプ)
| date_format_range_error
| n/a | 最大/最小に対してエラーを表示する際に使う日付書式 (デフォルトは d/m/Y H:i:s
)
NOTE
date_output
とdatetime_output
オプションは PHP のdate()
関数が理解できる任意の書式を使うことができます
| エラー | プレースホルダ | デフォルト値
| ------------ | ---------------- | ---------------------------------------------------------
| bad_format
| date_format
| "%value%" does not match the date format (%date_format%).
| min
| min
| The date must be after %min%.
| max
| max
| The date must be before %max%.
sfValidatorTime
スキーマバリデータ: No
sfValidatorTime
は時間をバリデートします。
バリデータはいくつかの入力のタイプを受け取ります:
- 次のキーで構成される配列:
hour
、minute
、とsecond
- 提供される場合
time_format
正規表現にマッチする文字列 - PHP の
strtotime()
関数によって解析できる文字列 - タイムスタンプを表現する整数
datetime_output
書式を適用することで汚染されている値は日付に変換されます。
| オプション | エラー | 説明
| ------------------- | ------------ | ---------------------------------------------------------------------
| time_format
| bad_format
| 日付がマッチしなければならない正規表現
| time_output
| n/a | 時間を返す際に使う書式 (デフォルトは H:i:s
)
| time_format_error
| n/a | bad_format
エラーに対してエラーを表示する際に使う日付書式 (提供されなければ date_format
を使う)
NOTE
time_output
オプションは PHP のdate()
関数が理解する任意のフォーマットを使うことができます。
| エラー | プレースホルダ | デフォルト値
| ------------ | ---------------- | ---------------------------------------------------------
| bad_format
| time_format
| "%value%" does not match the time format (%time_format%).
sfValidatorDateTime
スキーマバリデータ: No
sfValidatorDateTime
は時間で datetime をバリデートします。
これは次の内容のショートカットです:
[php]
$v = new sfValidatorDate(array('with_time' => true));
sfValidatorDateRange
スキーマバリデータ: No
sfValidatorDateTime
は日付の範囲をバリデートします。
| オプション | エラー | 説明
| ----------- | --------- | --------------------------
| from_date
| invalid
| from date バリデータ (必須)
| to_date
| invalid
| to date バリデータ (必須)
from_date
と to_date
バリデータはsfValidatorDate
クラスのインスタンスでなければなりません。
invalid
エラーメッセージは "%value%" does not match the time format
(%time_format%).
です。
ファイルバリデータ
sfValidatorFile
スキーマバリデータ: No
sfValidatorFile
バリデータはアップロードされたファイルをバリデートします。
バリデータはアップロードされたファイルを sfValidatedFile
クラスのインスタンス、もしくは設定されているのであれば、validated_file_class
オプションのインスタンスに変換します。
| オプション | エラー | 説明
| ---------------------- | ------------ | --------------------------------------------------------------------
| max_size
| max_size
| 最大のファイルサイズ
| mime_types
| mime_types
| 許可された mime type の配列もしくはカテゴリ (利用可能なカテゴリ: web_images
)
| mime_type_guessers
| n/a | mime type を推測する PHP callable の配列(mime type もしくは null
を返さなければならない)
| mime_categories
| n/a | mime type カテゴリの配列 (デフォルトで web_images
が定義される)
| path
| n/a | ファイルを保存するパス - sfValidatedFile
クラスによって使用される(オプション)
| validated_file_class
| n/a | クリーンにされたアップロードファイルを管理するクラスの名前(オプション)
web_images
カテゴリは 次のmime-type を含みます:
image/jpeg
image/pjpeg
image/png
image/x-png
image/gif
mime_types
オプションが設定されている場合、バリデータはアップロードされたファイルの mime-type をテストする方法が必要です。
バリデータは3つの方法を搭載しています:
guessFromFileinfo
:finfo_open()
関数を使う(PECL のFileinfo
エクステンションから)guessFromMimeContentType
:mime_content_type()
関数を使う (非推奨)guessFromFileBinary
: ファイルバイナリを使う (Unix 系システムでのみ動作する)
| エラー | プレースホルダ | デフォルト値
| ------------ | ----------------------------- | -------------------------------------------------
| max_size
| %size%
, %max_size%
| File is too large (maximum is %maxsize% bytes).
| mime_types
| %mime_types%
, %mime_type%
| Invalid mime type (%mimetype%).
| partial
| | The uploaded file was only partially uploaded.
| no_tmp_dir
| | Missing a temporary folder.
| cant_write
| | Failed to write file to disk.
| extension
| | File upload stopped by extension.
バリデータはPHPエラーを次のようにマッピングします:
UPLOAD_ERR_INI_SIZE
:max_size
UPLOAD_ERR_FORM_SIZE
:max_size
UPLOAD_ERR_PARTIAL
:partial
UPLOAD_ERR_NO_TMP_DIR
:no_tmp_dir
UPLOAD_ERR_CANT_WRITE
:cant_write
UPLOAD_ERR_EXTENSION
:extension
論理バリデータ
sfValidatorAnd
スキーマバリデータ: No
バリデータのリストを渡す場合、sfValidatorAnd
バリデータは汚染されている値をバリデートします。
sfValidatorAnd
コンストラクタは最初の引数としてバリデータのリストを受け取ります:
[php]
$v = new sfValidatorAnd(
array(
new sfValidatorString(array('max_length' => 255)),
new sfValidatorEmail(),
),
array('halt_on_error' => true),
array('invalid' => 'The input value must be an email with less than 255 characters.')
);
デフォルトでは、バリデータはすべての埋め込みバリデータによって投じられるエラーメッセージの配列を投げます。
invalid
エラーメッセージが空ではない文字列に設定されている場合、次のように単独のエラーメッセージを投げることもできます。
| オプション | エラー| 説明
| --------------- | ----- | -----------
| halt_on_error
| n/a
| 最初のエラーで停止するかどうか (デフォルトは false
)
halt_on_error
オプションが true
に設定されている場合、バリデータの順序は重要です。
バリデータの埋め込みリストは getValidators()
と addValidator()
メソッドを使うことで管理もできます。
sfValidatorOr
スキーマバリデータ: No
少なくともリストからのバリデータから汚染されている値が通る場合、sfValidatorOr
バリデータはその汚染されている値をバリデートします。
sfValidatorOr
コンストラクタは最初の引数としてバリデータのリストを受け取ります:
[php]
$v = new sfValidatorOr(
array(
new sfValidatorRegex(array('pattern' => '/\.com$/')),
new sfValidatorEmail(),
),
array(),
array('invalid' => 'The input value a .com domain or a valid email address.')
);
デフォルトでは、すべての埋め込みバリデータによって投げられたエラーメッセージの配列をバリデータは投げます。
invalid
エラーメッセージが空ではない文字列に設定されている場合、上述の例のようにこのバリデータは単独のエラーメッセージを投げることもできます。
バリデータの埋め込みリストは getValidators()
と addValidator()
メソッドを使うことでも管理できます。
sfValidatorSchema
スキーマバリデータ: Yes
sfValidatorSchema
はいくつかのフィールドで構成されるバリデータを表します。
フィールドはシンプルな名前つきのバリデータです:
[php]
$v = new sfValidatorSchema(array(
'name' => new sfValidatorString(),
'country' => new sfValidatorI18nChoiceCountry(),
));
NOTE フォームは
sfValidatorSchema
クラスのバリデータスキーマで定義されます。
このバリデータは配列を入力値としてのみ受け取りこれが当てはまらない場合 InvalidArgumentException
を投げます。
バリデータはプレバリデータとポストバリデータを持つことができます。 プレバリデータは他のすべてのバリデータの前に実行され、 ポストバリデータは他のすべてのバリデータの後でクリーンナップされた値で実行されます。
プレバリデータとポストバリデータはすべての値を受け取るバリデータスキーマそのものです。
これらはsetPreValidator()
と setPostValidator()
メソッドで設定できます:
[php]
$v->setPostValidator(
new sfValidatorSchemaCompare('password', '==', 'password_again')
);
| オプション | エラー | 説明
| --------------------- | -------------- | --------------------------------------------------------------
| allow_extra_fields
| extra_fields
| false
の場合、追加フィールドが値の入力配列に渡される場合、バリデータはエラーを追加します (デフォルトは false
)
| filter_extra_fields
| n/a | true
の場合、バリデータはクリーンになり、返される値の配列からの追加フィールドをフィルタリングします (デフォルトは true
)
| エラー | プレースホルダ | デフォルト値
| -------------- | ---------------- | ---------------------------------------------
| extra_fields
| %field%
| Unexpected extra form field named "%field%".
埋め込みのバリデータにアクセスするために sfValidatorSchema
を配列として使うことができます:
[php]
$vs = new sfValidatorSchema(array('name' => new sfValidatorString()));
$nameValidator = $vs['name'];
unset($vs['name']);
配列記法を利用して埋め込みのバリデータスキーマにアクセスできます:
[php]
$vs['author']['first_name']->setMessage('invalid', 'The first name is invalid.');
sfValidatorSchemaCompare
スキーマバリデータ: Yes
sfValidatorSchemaCompare
バリデータは汚染されている値の配列からいくつかの値を比較します:
[php]
$v = new sfValidatorSchemaCompare('password', '==', 'password_again');
| オプション | エラー| 説明
| -------------------- | ----- | --------------------------------
| left_field
| n/a | 左側フィールドの名前
| operator
| n/a | 比較演算子
| right_field
| n/a | 右側フィールドの名前
| throw_global_error
| n/a | グローバルエラー (デフォルトは false
) もしくは左側フィールドに結びつけられたエラーを投げるかどうか
利用可能な演算子の一覧は次のとおりです。
sfValidatorSchemaCompare::EQUAL
もしくは==
sfValidatorSchemaCompare::IDENTICAL
もしくは===
sfValidatorSchemaCompare::NOT_EQUAL
もしくは!=
sfValidatorSchemaCompare::NOT_IDENTICAL
もしくは!==
sfValidatorSchemaCompare::LESS_THAN
もしくは<
sfValidatorSchemaCompare::LESS_THAN_EQUAL
もしくは<=
sfValidatorSchemaCompare::GREATER_THAN
もしくは>
sfValidatorSchemaCompare::GREATER_THAN_EQUAL
もしくは>=
デフォルトでは、バリデータはグローバルエラーを投げます。
throw_global_error
が true
に設定されている場合、左側フィールド用のエラーが投げられます。
invalid
エラーメッセージは次の値: %left_field%
、%right_field%
と %operator%
を受け取ります。
sfValidatorSchemaFilter
スキーマバリデータ: Yes
sfValidatorSchemaFilter
バリデータはスキーマではないバリデータをスキーマバリデータに変換します。
これはポストバリデータのコンテキストで便利である場合があります:
[php]
$v = new sfValidatorSchema();
$v->setPostValidator(
new sfValidatorSchemaFilter('email', new sfValidatorEmail())
);
国際化バリデータ
sfValidatorI18nChoiceCountry
スキーマバリデータ: No
sfValidatorI18nChoiceCountry
は有効な ISO 3166 の国コードで汚染されている値をバリデートします。
| オプション | エラー | 説明
| ----------- | --------- | ----------------------------------
| countries
| invalid
| 使用する国コードの配列 (ISO 3166)
sfValidatorI18nChoiceLanguage
スキーマバリデータ: No
sfValidatorI18nChoiceLanguage
は汚染されている値が有効な言語コードであることをバリデートします。
| オプション | エラー | 説明
| ----------- | --------- | ------------------------
| languages
| invalid
| 使用する言語コードの配列
sfValidatorI18nChoiceTimezone
スキーマバリデータ: No
sfValidatorI18nChoiceTimezone
は汚染されている値が有効なタイムゾーンであることをバリデートします。
| オプション | エラー | 説明
| ----------- | --------- | --------------
| languages
| invalid
| 使う言語の配列
Propel バリデータ
sfValidatorPropelChoice
スキーマバリデータ: No
sfValidatorPropelChoice
バリデータは汚染されている値が
Propel モデルのレコードのリストの間にあることをバリデートします。
レコードのリストは criteria
オプションを使うことで制限できます。
汚染されている値はレコードのプライマリキーでなければなりません。これは column
オプションを渡すことで変更できます。
| オプション | エラー| 説明
| ------------ | ----- | ----------------------------------------------------------------------------------
| model
| n/a | モデルクラス (必須)
| criteria
| n/a | オブジェクトを読み取るときに従う基準
| column
| n/a | カラム名 (デフォルトは null
でプライマリキーが使われることを意味する) - フィールド名のフォーマットでなければならない
| connection
| n/a | 使用する Propel の接続 (デフォルトは null
)
| multiple
| n/a | select タグが複数の選択を許可しなければならない場合は true
NOTE このバリデータは複合プライマリキーを持つモデルに対しては機能しません。
sfValidatorPropelUnique
スキーマバリデータ: Yes
sfValidatorPropelUnique
バリデータは Propel モデルのカラムもしくはカラムのグループ (column
オプション) の唯一性をバリデートします。
唯一性がいくつのものカラムに及ぶ場合、throw_global_error
オプションを設定することでグローバルエラーが投げられます。
| オプション | エラー| 説明
| -------------------- | ----- | ---------------------------------------------------------------------------
| model
| n/a | モデルクラス (必須)
| column
| n/a | Propel フィールド名フォーマットのユニークカラム名 (必須)。いくつかのカラムがユニークであれば、フィールド名の配列を渡すことができる
| field
| n/a | カラム名以外で、フォームによって使用されるフィールド名
| primary_key
| n/a | Propel のフィールド名のフォーマットでのプライマリキーのカラム名 (オプションで、提供されなければイントロスペクトされます)。テーブルがいくつかのプライマリキーを持つ場合は配列を渡すこともできる
| connection
| n/a | 使用する Propel 接続 (デフォルトは null
)
| throw_global_error
| n/a | グローバルエラー (デフォルトは false
) もしくはカラムオプションの配列に関連した最初のフィールドに結びつけられたエラーを投げるかどうか
Doctrine バリデータ
sfValidatorDoctrineChoice
スキーマバリデータ: No
sfValidatorDoctrineChoice
バリデータは汚染されている値が Doctrine モデルのレコードのリストの間にあることをバリデートします。
レコードのリストは query
オプションを使用することで制限できます。
汚染されている値はレコードのプライマリキーでなければなりません。
これはcolumn
オプションを渡すことで変更できます。
| オプション | エラー| 説明
| ------------ | ----- | ----------------------------------------------------------------------
| model
| n/a | モデルクラス(必須)
| alias
| n/a | クエリで使われるルートコンポーネントのエイリアス
| query
| n/a | オブジェクトを読み取るときに使うクエリ
| column
| n/a | カラム名 (デフォルトは null
でプライマリキーが使われることを意味する) - フィールド名のフォーマットでなければならない
| connection
| n/a | 使う Doctrine の接続 (デフォルトは null
)
NOTE このバリデータは複合プライマリキーを持つモデルに対しては機能しません。
sfValidatorDoctrineUnique
スキーマバリデータ: Yes
sfValidatorDoctrineUnique
バリデータは Doctrine モデルに対する1つのカラムもしくはカラムのグループ (column
オプション)の唯一性をバリデートします。
複数のカラムがユニークである場合、throw_global_error
オプションを設定することでグローバルエラーに投げられます。
| オプション | エラー| 説明
| -------------------- | ----- | ----------------------------------------------------------------------------
| model
| n/a | モデルクラス(必須)
| column
| n/a | Doctrineのフィールド名フォーマットのユニークカラムの名前(必須)。複数のカラムがユニークである場合、フィールド名の配列を渡すことができる
| primary_key
| n/a | Doctrineフィールド名フォーマットでのプライマリキーのカラム名(オプションで、提供されなければイントロスペクトされる)。テーブルが複数のプライマリキーを持つ場合配列を渡すこともできる
| connection
| n/a | 使用する Doctrine 接続 (デフォルトは null
)
| throw_global_error
| n/a | グローバルエラー (デフォルトは false
) もしくはカラムのオプション配列に関連した最初のフィールドに結びつけられたエラーを投げるかどうか