付録 B - バリデータ

はじめに

symfony フォームフレームワークはたくさんの便利なバリデータを搭載しています。 これらのバリデータはたいていのプロジェクトの共通のニーズをカバーします。 この章では symfony に搭載されるデフォルトのフォームバリデータを説明します。 sfPropelPluginsfDoctrinePlugin プラグインにもバリデータが含まれています。 これらのプラグインはコアチームによってサポートされており、とても便利なバリデータを含みます。

TIP symfony MVC フレームワークを使わない場合でも、プロジェクトのどこかの validator/ ディレクトリに設置することで、sfFormExtraPluginsfPropelPluginsfDoctrinePlugin プラグインで定義されたバリデータを使うことができます。

それぞれのバリデータの詳細内容に飛び込む前に、バリデータが共通に持つ機能を見てみましょう。

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() メソッドを呼び出すことで requiredinvalid エラーメッセージに使われるデフォルトの文字列を変更できます:

[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

スキーマバリデータ: 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 オプションをセットすることでサポートされます)。 日付フォーマットをバリデートすることとは別に、最大と最小の有効な日付を強制できます。

バリデータはいくつかの入力タイプを受け取ります:

  • 次のキーで構成される配列: yearmonthdayhourminutesecond
  • 提供されるのであれば 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_outputdatetime_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 は時間をバリデートします。

バリデータはいくつかの入力のタイプを受け取ります:

  • 次のキーで構成される配列: hourminute、と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_dateto_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_errortrue に設定されている場合、左側フィールド用のエラーが投げられます。

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) もしくはカラムのオプション配列に関連した最初のフィールドに結びつけられたエラーを投げるかどうか