@ -1,8 +1,7 @@
コア・バリデータ
================
Yii は、一般的に使われる一連のコア・バリデータを提供しています。
コア・バリデータは、主として、`yii\validators` 名前空間の下にあります。
Yii は、一般的に使われる一連のコア・バリデータを提供しています。コア・バリデータは、主として、`yii\validators` 名前空間の下にあります。
長ったらしいバリデータ・クラス名を使う代りに、*エイリアス* を使って使用するコア・バリデータを指定することが出来ます。
例えば、[[yii\validators\RequiredValidator]] クラスを参照するのに `required` というエイリアスを使うことが出来ます。
@ -39,7 +38,8 @@ public function rules()
- `strict` : 入力値の型が `trueValue` と `falseValue` の型と一致しなければならないかどうか。デフォルト値は `false` 。
> Note: HTML フォームで送信されたデータ入力値は全て文字列であるため、通常は、[[yii\validators\BooleanValidator::strict|strict]] プロパティは `false` のままにすべきです。
> Note: HTML フォームで送信されたデータ入力値は全て文字列であるため、通常は、
[[yii\validators\BooleanValidator::strict|strict]] プロパティは `false` のままにすべきです。
## [[yii\captcha\CaptchaValidator|captcha]] < span id = "captcha" ></ span >
@ -50,11 +50,14 @@ public function rules()
]
```
このバリデータは、通常、[[yii\captcha\CaptchaAction]] および [[yii\captcha\Captcha]] と一緒に使われ、入力値が [[yii\captcha\Captcha|CAPTCHA]] ウィジェットによって表示された検証コードと同じであることを確認します。
このバリデータは、通常、[[yii\captcha\CaptchaAction]] および [[yii\captcha\Captcha]] と一緒に使われ、
入力値が [[yii\captcha\Captcha|CAPTCHA]] ウィジェットによって表示された検証コードと同じであることを確認します。
- `caseSensitive` : 検証コードの比較で大文字と小文字を区別するかどうか。デフォルト値は `false` 。
- `captchaAction` : CAPTCHA 画像を表示する [[yii\captcha\CaptchaAction|CAPTCHA アクション]] に対応する [ルート ](structure-controllers.md#routes )。デフォルト値は `'site/captcha'` 。
- `skipOnEmpty` : 入力値が空のときに検証をスキップできるかどうか。デフォルト値は `false` で、入力が必須であることを意味します。
- `captchaAction` : CAPTCHA 画像を表示する [[yii\captcha\CaptchaAction|CAPTCHA アクション]] に対応する
[ルート ](structure-controllers.md#routes )。デフォルト値は `'site/captcha'` 。
- `skipOnEmpty` : 入力値が空のときに検証をスキップできるかどうか。デフォルト値は `false` で、
入力が必須であることを意味します。
## [[yii\validators\CompareValidator|compare]] < span id = "compare" ></ span >
@ -72,10 +75,12 @@ public function rules()
]
```
このバリデータは指定された入力値を他の値と比較し、両者の関係が `operator` プロパティで指定されたものであることを確認します。
このバリデータは指定された入力値を他の値と比較し、両者の関係が
`operator` プロパティで指定されたものであることを確認します。
- `compareAttribute` : その値が比較対象となる属性の名前。
このバリデータが属性を検証するのに使用されるとき、このプロパティのデフォルト値はその属性の名前に接尾辞 `_repeat` を付けた名前になります。
このバリデータが属性を検証するのに使用されるとき、このプロパティのデフォルト値はその属性の名前に接尾辞
`_repeat` を付けた名前になります。
例えば、検証される属性が `password` であれば、このプロパティのデフォルト値は `password_repeat` となります。
- `compareValue` : 入力値が比較される定数値。
このプロパティと `compareAttribute` の両方が指定された場合は、このプロパティが優先されます。
@ -90,14 +95,15 @@ public function rules()
* `<` : 検証される値が比較される値よりも小さいことを検証する。
* `<=` : 検証される値が比較される値よりも小さいか等しいことを検証する。
- `type` : デフォルトの比較タイプは '[[yii\validators\CompareValidator::TYPE_STRING|string]]' (文字列) であり、その場合、値は 1 バイトごとに比較されます。
数値を比較する場合は、必ず [[yii\validators\CompareValidator::$type|$type]] を '[[yii\validators\CompareValidator::TYPE_NUMBER|number]]' に設定して、数値としての比較を有効にして下さい。
数値を比較する場合は、必ず [[yii\validators\CompareValidator::$type|$type]] を '[[yii\validators\CompareValidator::TYPE_NUMBER|number]]' に設定して、
数値としての比較を有効にして下さい。
### 日付の値を比較する
compare バリデータは、文字列や数値を比較するためにしか使えません。
日付のような値を比較する必要がある場合は、二つの選択肢があります。
日付をある固定値と比較するときは、単に [[yii\validators\DateValidator|date]] バリデータを使って、その [[yii\validators\DateValidator::$min|$min]] や [[yii\validators\DateValidator::$max|$max]] のプロパティを指定すれば良いでしょう。
日付をある固定値と比較するときは、単に [[yii\validators\DateValidator|date]] バリデータを使って、
その [[yii\validators\DateValidator::$min|$min]] や [[yii\validators\DateValidator::$max|$max]] のプロパティを指定すれば良いでしょう。
フォームに入力された二つの日付、例えば、`fromDate` と `toDate` のフィールドを比較する必要がある場合は、
次のように、compare バリデータと date バリデータを組み合わせて使うことが出来ます。
@ -111,13 +117,14 @@ compare バリデータは、文字列や数値を比較するためにしか使
そして、有効な日付であった場合は、機械が読める形式に変換されます。
その後に、これらの二つの値が compare バリデータによって比較されます。
現在、date バリデータはクライアント・サイドのバリデーションを提供していませんので、これはサーバ・サイドでのみ動作します。
そのため、compare バリデータについても、[[yii\validators\CompareValidator::$enableClientValidation|$enableClientValidation]] は `false` に設定されています。
そのため、compare バリデータについても、[[yii\validators\CompareValidator::$enableClientValidation|$enableClientValidation]] は
`false` に設定されています。
## [[yii\validators\DateValidator|date]] < span id = "date" ></ span >
[[yii\validators\DateValidator|date]] バリデータには 3 つの異なるショートカットがあります。
[[yii\validators\DateValidator|date]] バリデータには三つの異なる
ショートカットがあります。
```php
[
@ -128,10 +135,12 @@ compare バリデータは、文字列や数値を比較するためにしか使
```
このバリデータは、入力値が正しい書式の date、time、または datetime であるかどうかをチェックします。
オプションとして、入力値を UNIX タイムスタンプ (または、その他、機械による読み取りが可能な形式) に変換して、[[yii\validators\DateValidator::timestampAttribute|timestampAttribute]] によって指定された属性に保存することも出来ます。
オプションとして、入力値を UNIX タイムスタンプ (または、その他、機械による読み取りが可能な形式) に変換して、
[[yii\validators\DateValidator::timestampAttribute|timestampAttribute]] によって指定された属性に保存することも出来ます。
- `format` : 検証される値が従っているべき日付/時刻の書式。
これには [ICU manual ](http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax ) で記述されている日付/時刻のパターンを使うことが出来ます。
これには [ICU manual ](http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax )
で記述されている日付/時刻のパターンを使うことが出来ます。
あるいは、PHP の `Datetime` クラスによって認識される書式に接頭辞 `php:` を付けた文字列でも構いません。
サポートされている書式については、< http: / / php . net / manual / ja / datetime . createfromformat . php > を参照してください。
このプロパティが設定されていないときは、`Yii::$app->formatter->dateFormat` の値を取ります。
@ -141,19 +150,25 @@ compare バリデータは、文字列や数値を比較するためにしか使
その場合は、元の値は検証実行後にタイムスタンプで上書きされます。
[DatePicker で日付の入力を扱う ](https://github.com/yiisoft/yii2-jui/blob/master/docs/guide-ja/topics-date-picker.md ) に使用例がありますので、参照してください。
バージョン 2.0.4 以降では、[[yii\validators\DateValidator::$timestampAttributeFormat|$timestampAttributeFormat]] と [[yii\validators\DateValidator::$timestampAttributeTimeZone|$timestampAttributeTimeZone]] を使って、この属性に対するフォーマットとタイム・ゾーンを指定することが出来ます。
バージョン 2.0.4 以降では、[[yii\validators\DateValidator::$timestampAttributeFormat|$timestampAttributeFormat]] と
[[yii\validators\DateValidator::$timestampAttributeTimeZone|$timestampAttributeTimeZone]] を使って、
この属性に対するフォーマットとタイム・ゾーンを指定することが出来ます。
`timestampAttribute` を使う場合、入力値が UNIX タイムスタンプに変換されること、そして、UNIX タイムスタンプは定義により UTC であることに注意して下さい。
すなわち、[[yii\validators\DateValidator::timeZone|入力のタイム・ゾーン]] から UTC への変換が実行されます。
- バージョン 2.0.4 以降では、タイムスタンプの [[yii\validators\DateValidator::$min|最小値]] または [[yii\validators\DateValidator::$max|最大値]] を指定することも出来ます。
- バージョン 2.0.4 以降では、タイムスタンプの [[yii\validators\DateValidator::$min|最小値]] または
[[yii\validators\DateValidator::$max|最大値]] を指定することも出来ます。
入力が必須でない場合には、date バリデータに加えて、default バリデータ (デフォルト値フィルタ) を追加すれば、空の入力値が `null` として保存されることを保証することが出来ます。
そうしないと、データベースに `0000-00-00` という日付が保存されたり、デート・ピッカーの入力フィールドが `1970-01-01` になったりしてしまいます。
入力が必須でない場合には、date バリデータに加えて、default バリデータ (デフォルト値フィルタ) を追加すれば、
空の入力値が `null` として保存されることを保証することが出来ます。そうしないと、データベースに `0000-00-00` という日付が保存されたり、
デート・ピッカーの入力フィールドが `1970-01-01` になったりしてしまいます。
```php
[
[['from_date', 'to_date'], 'default', 'value' => null],
[['from_date', 'to_date'], 'date'],
]
```
## [[yii\validators\DefaultValueValidator|default]] < span id = "default" ></ span >
@ -177,8 +192,7 @@ compare バリデータは、文字列や数値を比較するためにしか使
その代りに、検証される属性が空のときに、その属性にデフォルト値を割り当てます。
- `value` : デフォルト値、または、デフォルト値を返す PHP コーラブル。
検証される属性が空のときにこのデフォルト値が割り当てられます。
PHP コーラブルのシグニチャは、次のものでなければなりません。
検証される属性が空のときにこのデフォルト値が割り当てられます。PHP コーラブルのシグニチャは、次のものでなければなりません。
```php
function foo($model, $attribute) {
@ -191,6 +205,7 @@ function foo($model, $attribute) {
データベース・スキーマによるデフォルト値は、モデルの [loadDefaultValues() ](db-active-record.md#default-attribute-values )
によってロードすることが出来ます。
## [[yii\validators\NumberValidator|double]] < span id = "double" ></ span >
```php
@ -200,13 +215,10 @@ function foo($model, $attribute) {
]
```
このバリデータは、入力値が実数値であるかどうかをチェックします。
[number ](#number ) バリデータと等価です。
このバリデータは、入力値が実数値であるかどうかをチェックします。[number](#number) バリデータと等価です。
- `max` : 上限値 (その値を含む)。
設定されていない場合は、バリデータが上限値をチェックしないことを意味します。
- `min` : 下限値 (その値を含む)。
設定されていない場合は、バリデータが下限値をチェックしないことを意味します。
- `max` : 上限値 (その値を含む)。設定されていない場合は、バリデータが上限値をチェックしないことを意味します。
- `min` : 下限値 (その値を含む)。設定されていない場合は、バリデータが下限値をチェックしないことを意味します。
## [[yii\validators\EachValidator|each]] < span id = "each" ></ span >
@ -224,13 +236,13 @@ function foo($model, $attribute) {
これは、配列の *全ての* 要素が指定された検証規則による検証に成功するかどうかを調べるものです。
上の例では、`categoryIDs` 属性は配列を値として取らなければならず、配列の各要素は `integer` の検証規則によって検証されることになります。
- `rule` : 検証規則を指定する配列。
配列の最初の要素がバリデータのクラス名かエイリアスを指定します。
- `rule` : 検証規則を指定する配列。配列の最初の要素がバリデータのクラス名かエイリアスを指定します。
配列の残りの「名前・値」のペアが、バリデータ・オブジェクトを構成するのに使われます。
- `allowMessageFromRule` : 埋め込まれた検証規則によって返されるエラー・メッセージを使うかどうか。
デフォルト値は `true` です。これが `false` の場合は、`message` をエラー・メッセージとして使います。
> Note: 属性が配列でない場合は、検証が失敗したと見なされ、`message` がエラー・メッセージとして返されます。
> Note: 属性が配列でない場合は、検証が失敗したと見なされ、
`message` がエラー・メッセージとして返されます。
## [[yii\validators\EmailValidator|email]] < span id = "email" ></ span >
@ -257,33 +269,36 @@ function foo($model, $attribute) {
```php
[
// a1 の値が属性 "a1" で表される カラムに存在する必要がある
// a1 の入力値が a1 の カラムに存在する必要がある
['a1', 'exist'],
// a1 の値が属性 "a2" で表される カラムに存在する必要がある
// a1 の入力値が a2 の カラムに存在する必要がある
['a1', 'exist', 'targetAttribute' => 'a2'],
// a1 の値が "a1" のカラム、a2 の値が "a2" のカラムに存在する必要がある
// 両者はともにエラー・メッセージを受け取る
// a1 と a2 の両方が存在する必要がある。両者はともにエラー・メッセージを受け取る
[['a1', 'a2'], 'exist', 'targetAttribute' => ['a1', 'a2']],
// a1 の値が "a1" のカラム、a2 の値が "a2" のカラムに存在する必要がある
// a1 のみがエラー・メッセージを受け取る
// a1 と a2 の両方が存在する必要がある。a1 のみがエラー・メッセージを受け取る
['a1', 'exist', 'targetAttribute' => ['a1', 'a2']],
// a2 の値が "a2" のカラム、a1 の値が "a3" のカラムに存在する必要がある
// a1 がエラー・メッセージを受け取る
// a2 の値が a2 のカラム、a1 の値が a3 のカラムに存在する必要がある。a1 がエラー・メッセージを受け取る
['a1', 'exist', 'targetAttribute' => ['a2', 'a1' => 'a3']],
// a1 の値が "a1" のカラムに存在する必要がある
// a1 が配列である場合は、その全ての要素が "a1" のカラムに存在する必要がある
// a1 が存在する必要がある。a1 が配列である場合は、その全ての要素が存在する必要がある
['a1', 'exist', 'allowArray' => true],
// type_id が ProductType クラスで定義されているテーブルの id カラムに存在する必要がある
['type_id', 'exist', 'targetClass' => ProductType::class, 'targetAttribute' => ['type_id' => 'id']],
// 同上。定義済みの "type" リレーションを使用。
['type_id', 'exist', 'targetRelation' => 'type'],
]
```
このバリデータは、入力値が [アクティブ・レコード ](db-active-record.md ) の属性によって表されるテーブルのカラムに存在するかどうかをチェックします。
`targetAttribute` を使って [アクティブ・レコード ](db-active-record.md ) の属性を指定し、`targetClass` によって対応するクラスを指定することが出来ます。
これらを指定しない場合は、検証されるモデルの属性とクラスの値が使用されます。
`targetAttribute` を使って [アクティブ・レコード ](db-active-record.md ) の属性を指定し、
`targetClass` によって対応するクラスを指定することが出来ます。
これらを指定しない場合は、検証されるモデルの属性とクラスが使用されます。
このバリデータは、一つまたは複数のカラムに対する検証に使用することが出来ます
(複数のカラムに対する検証の場合は、それらの属性の組み合せが存在しなければならないことを意味します)。
@ -293,15 +308,14 @@ function foo($model, $attribute) {
- `targetAttribute` : `targetClass` において、入力値の存在を検証するために使用される属性の名前。
設定されていない場合は、現在検証されている属性の名前が使用されます。
複数のカラムの存在を同時に検証するために配列を使うことが出来ます。
配列の値は存在を検証するのに使用される属性であり、配列のキーはその 値が検証される属性です。
配列の値は存在を検証するのに使用される属性であり、配列のキーは入力 値が検証される属性です。
キーと値が同じ場合は、値だけを指定することが出来ます。
- `filter` : 入力値の存在をチェックするのに使用される DB クエリに適用される追加のフィルタ。
これには、文字列、または、追加のクエリ条件を表現する配列を使うことが出来ます
(クエリ条件の書式については、[[yii\db\Query::where()]] を参照してください)。
または、`function ($query)` というシグニチャを持つ無名関数でも構いません。
`$query` は関数の中で修正できる [[yii\db\Query|Query]] オブジェクトです。
- `allowArray` : 入力値が配列であることを許容するか否か。
デフォルト値は `false` 。
- `allowArray` : 入力値が配列であることを許容するか否か。デフォルト値は `false` 。
このプロパティが `true` で入力値が配列であった場合は、配列の全ての要素がターゲットのカラムに存在しなければなりません。
`targetAttribute` を配列で指定して複数のカラムに対して検証しようとしている場合は、このプロパティを `true` に設定することが出来ないことに注意してください。
@ -326,13 +340,10 @@ function foo($model, $attribute) {
リストは、配列、または、空白かカンマで区切られたファイルの MIME タイプからなる文字列 (例えば、"image/jpeg, image/png") で指定することが出来ます。
特殊文字 `*` によるワイルドカードのマスクを使って、一群の MIME タイプに一致させることも出来ます。
例えば `image/*` は、`image/` で始まる全ての MIME タイプ (`image/jpeg`, `image/png` など) を通します。
MIME タイプ名は大文字と小文字を区別しません。
デフォルト値は `null` であり、すべての MIME タイプが許可されることを意味します。
MIME タイプ名は大文字と小文字を区別しません。デフォルト値は `null` であり、すべての MIME タイプが許可されることを意味します。
MIME タイプの詳細については、[一般的なメディア・タイプ](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types) を参照してください。
- `minSize` : アップロードされるファイルに要求される最小限のバイト数。
デフォルト値は `null` であり、下限値が無いことを意味します。
- `maxSize` : アップロードされるファイルに許可される最大限のバイト数。
デフォルト値は `null` であり、上限値が無いことを意味します。
- `minSize` : アップロードされるファイルに要求される最小限のバイト数。デフォルト値は `null` であり、下限値が無いことを意味します。
- `maxSize` : アップロードされるファイルに許可される最大限のバイト数。デフォルト値は `null` であり、上限値が無いことを意味します。
- `maxFiles` : 指定された属性が保持しうる最大限のファイル数。
デフォルト値は 1 であり、入力値がアップロードされた一つだけのファイルでなければならないことを意味します。
この値が 2 以上である場合は、入力値は最大で `maxFiles` 数のアップロードされたファイルからなる配列でなければなりません。
@ -362,19 +373,18 @@ function foo($model, $attribute) {
このバリデータはデータを検証しません。
代りに、入力値にフィルタを適用して、それを検証される属性に書き戻します。
- `filter` : フィルタを定義する PHP コールバック。
これには、グローバル関数の名前、無名関数などを指定することが出来ます。
関数のシグニチャは ``function ($value) { return $newValue; }` でなければなりません。
このプロパティは必須項目です。
- `skipOnArray` : 入力値が配列である場合にフィルタをスキップするか否か。
デフォルト値は `false` 。
- `filter` : フィルタを定義する PHP コールバック。これには、グローバル関数の名前、無名関数などを指定することが出来ます。
関数のシグニチャは ``function ($value) { return $newValue; }` でなければなりません。このプロパティは必須項目です。
- `skipOnArray` : 入力値が配列である場合にフィルタをスキップするか否か。デフォルト値は `false` 。
フィルタが配列の入力を処理できない場合は、このプロパティを `true` に設定しなければなりません。
そうしないと、何らかの PHP エラーが生じ得ます。
> Tip: 入力値をトリムしたい場合は、[trim](#trim) バリデータを直接使うことが出来ます。
> Tip: `filter` のコールバックに期待されるシグニチャを持つ PHP 関数が多数存在します。
> 例えば、([intval](http://php.net/manual/ja/function.intval.php) や [boolval ](http://php.net/manual/ja/function.boolval.php ) などを使って) 型キャストを適用し、属性が特定の型になるように保証したい場合は、それらの関数をクロージャで包む必要はなく、単にフィルタの関数名を指定するだけで十分です。
> 例えば、([intval](http://php.net/manual/ja/function.intval.php) や [boolval ](http://php.net/manual/ja/function.boolval.php )
> などを使って) 型キャストを適用し、属性が特定の型になるように保証したい場合は、
> それらの関数をクロージャで包む必要はなく、単にフィルタの関数名を指定するだけで十分です。
>
> ```php
> ['property', 'filter', 'filter' => 'boolval'],
@ -403,7 +413,6 @@ function foo($model, $attribute) {
- `minHeight` : 画像の高さの最小値。デフォルト値は `null` であり、下限値がないことを意味します。
- `maxHeight` : 画像の高さの最大値。デフォルト値は `null` であり、上限値がないことを意味します。
## [[yii\validators\IpValidator|ip]] < span id = "ip" ></ span >
```php
[
@ -434,17 +443,14 @@ function foo($model, $attribute) {
デフォルト値は `false` 。
- `normalize` : CIDR を持たないアドレスに、最も短い (IPv4 では 32、IPv6 では 128) CIDR プレフィクスを追加するか否か。
`subnet` が `false` 以外の場合にのみ動作します。
例えば、
`subnet` が `false` 以外の場合にのみ動作します。例えば、
* `10.0.1.5` は `10.0.1.5/32` に正規化され、
* `2008:db0::1` は `2008:db0::1/128` に正規化されます
デフォルト値は `false` 。
- `negation` : 検証の対象となるアドレスが先頭に否定文字 `!` を持つことが出来るか否か。
デフォルト値は `false` 。
- `negation` : 検証の対象となるアドレスが先頭に否定文字 `!` を持つことが出来るか否か。デフォルト値は `false` 。
- `expandIPv6` : IPv6 アドレスを完全な記法に展開するか否か。
例えば、`2008:db0::1` は `2008:0db0:0000:0000:0000:0000:0000:0001` に展開されます。
デフォルト値は `false` 。
例えば、`2008:db0::1` は `2008:0db0:0000:0000:0000:0000:0000:0001` に展開されます。デフォルト値は `false` 。
- `ranges` : 許容または禁止される IPv4 または IPv6 の範囲の配列。
配列が空の場合、またはこのオプションが設定されていない場合は、全ての IP アドレスが許容されます。
@ -463,11 +469,10 @@ function foo($model, $attribute) {
```
この例では、`192.168.10.0/24` のサブネットを除いて、全ての IPv4 および IPv6 アドレスが許容されます。
IPv4 アドレス `192.168.10.128` も、制約の前にリストされているため、同様に許容されます。
- `networks` : `ranges` で使用する事が出来るネットワークのエイリアスの配列。
配列の形式は、
- `networks` : `ranges` で使用する事が出来るネットワークのエイリアスの配列。配列の形式は、
* キー - エイリアス名
* 値 - 文字列の配列。文字列は、範囲、IP アドレス、または、他のエイリアスとすることが出来ます。
また、文字列は (`negation` オプションとは独立に) `!` によって否定することが出来ます。
また、文字列は (`negation` オプションとは独立に) `!` によって否定することが出来ます。
デフォルトで、次のエイリアスが定義されています。
@ -482,7 +487,6 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
> Info: このバリデータは、バージョン 2.0.7 以降で利用することが出来ます。
## [[yii\validators\RangeValidator|in]] < span id = "in" ></ span >
```php
@ -529,7 +533,8 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
このバリデータは、入力値が指定された正規表現に一致するかどうかをチェックします。
- `pattern` : 入力値が一致すべき正規表現。このプロパティを設定することは必須です。そうしないと、例外が投げられます。
- `pattern` : 入力値が一致すべき正規表現。このプロパティを設定することは必須です。
そうしないと、例外が投げられます。
- `not` : 検証結果を反転すべきかどうか。
デフォルト値は false で、入力値がパターンに一致したときにだけ検証が成功することを意味します。
このプロパティが true に設定されているときは、入力値がパターンに一致しない場合にだけ検証が成功したと見なされます。
@ -561,14 +566,15 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
このバリデータは、入力値が提供されており、空ではないことをチェックします。
- `requiredValue` : 入力値として要求される値。
このプロパティが設定されていない場合は、入力値が空ではいけないことを意味します。
- `requiredValue` : 入力値として要求される値。このプロパティが設定されていない場合は、入力値が空ではいけないことを意味します。
- `strict` : 値を検証するときに、データ型をチェックするかどうか。デフォルト値は `false` 。
`requiredValue` が設定されていない場合、このプロパティが `true` であるときは、バリデータは入力値が厳密な意味で `null` であるかどうかをチェックします。
一方、このプロパティが `false` であるときは、値が空か否かの判断に緩い規則を使います。
`requiredValue` が設定されている場合、このプロパティが `true` であるときは、入力値と `requiredValue` を比較するときに型のチェックを行います。
`requiredValue` が設定されている場合、このプロパティが `true` であるときは、
入力値と `requiredValue` を比較するときに型のチェックを行います。
> Info: 値が空であるか否かを決定する方法については、独立したトピックとして、[空の入力値を扱う](input-validation.md#handling-empty-inputs) のセクションでカバーされています。
> Info: 値が空であるか否かを決定する方法については、独立したトピックとして、
> [空の入力値を扱う ](input-validation.md#handling-empty-inputs ) のセクションでカバーされています。
## [[yii\validators\SafeValidator|safe]] < span id = "safe" ></ span >
@ -599,10 +605,12 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
これは、次のいずれかの形式で指定することが出来ます。
* 一つの整数: 文字列がちょうどその長さでなければならない、その長さ。
* 一つの要素を持つ配列: 入力文字列の長さの最小値 (例えば、`[8]`)。これは `min` を上書きします。
* 二つの要素を持つ配列: 入力文字列の長さの最小値と最大値 (例えば、`[8, 128]`)。これは `min` と `max` の両方を上書きします。
* 二つの要素を持つ配列: 入力文字列の長さの最小値と最大値 (例えば、`[8, 128]`)。
これは `min` と `max` の両方を上書きします。
- `min` : 入力文字列の長さの最小値。設定されていない時は、長さの下限値がないことを意味します。
- `max` : 入力文字列の長さの最大値。設定されていない時は、長さの上限値がないことを意味します。
- `encoding` : 検証される入力文字列の文字エンコーディング。設定されていない時は、アプリケーションの [[yii\base\Application::charset|charset]] の値が使われ、デフォルトでは `UTF-8` となります。
- `encoding` : 検証される入力文字列の文字エンコーディング。設定されていない時は、
アプリケーションの [[yii\base\Application::charset|charset]] の値が使われ、デフォルトでは `UTF-8` となります。
## [[yii\validators\FilterValidator|trim]] < span id = "trim" ></ span >
@ -614,8 +622,7 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
]
```
このバリデータはデータの検証を実行しません。
その代りに、入力値の前後にあるホワイト・スペースをトリムします。
このバリデータはデータの検証を実行しません。その代りに、入力値の前後にあるホワイト・スペースをトリムします。
入力値が配列であるときは、このバリデータによって無視されることに注意してください。
@ -623,22 +630,19 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
```php
[
// a1 の値が属性 "a1" で表される カラムにおいてユニークである必要がある
// a1 の入力値が a1 の カラムにおいてユニークである必要がある
['a1', 'unique'],
// a1 の値が属性 "a2" で表される カラムにおいてユニークである必要がある
// a1 の入力値が a2 の カラムにおいてユニークである必要がある
['a1', 'unique', 'targetAttribute' => 'a2'],
// a1 の値が "a1" のカラム、a2 の値が "a2" のカラムにおいてユニークである必要がある
// 両者はともにエラー・メッセージを受け取る
// a1 と a2 の両方がユニークである必要がある。両者がともにエラー・メッセージを受け取る
[['a1', 'a2'], 'unique', 'targetAttribute' => ['a1', 'a2']],
// a1 の値が "a1" のカラム、a2 の値が "a2" のカラムにおいてユニークである必要がある
// a1 のみがエラー・メッセージを受け取る
// a1 と a2 の両方がユニークである必要がある。a1 のみがエラー・メッセージを受け取る
['a1', 'unique', 'targetAttribute' => ['a1', 'a2']],
// a2 の値が "a2" のカラム、a1 の値が "a3" のカラムにおいてユニークである必要がある
// a1 がエラー・メッセージを受け取る
// a2 の値が a2 のカラム、a1 の値が a3 のカラムにおいてユニークである必要がある。a1 がエラー・メッセージを受け取る
['a1', 'unique', 'targetAttribute' => ['a2', 'a1' => 'a3']],
]
```
@ -652,13 +656,12 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
- `targetAttribute` : `targetClass` において、入力値がユニークであることを検証するために使用される属性の名前。
設定されていない場合は、現在検証されている属性の名前が使用されます。
複数のカラムのユニーク性を同時に検証するために配列を使うことが出来ます。
配列の値はユニーク性を検証するのに使用される属性であり、配列のキーはその値が検証される属性です。
配列の値はユニーク性を検証するのに使用される属性であり、配列のキーはその入力 値が検証される属性です。
キーと値が同じ場合は、値だけを指定することが出来ます。
- `filter` : 入力値のユニーク性をチェックするのに使用される DB クエリに適用される追加のフィルタ。
これには、文字列、または、追加のクエリ条件を表現する配列を使うことが出来ます
(クエリ条件の書式については、[[yii\db\Query::where()]] を参照してください)。
または、`function ($query)` というシグニチャを持つ無名関数でも構いません。
`$query` は関数の中で修正できる [[yii\db\Query|Query]] オブジェクトです。
または、`function ($query)` というシグニチャを持つ無名関数でも構いません。`$query` は関数の中で修正できる [[yii\db\Query|Query]] オブジェクトです。
## [[yii\validators\UrlValidator|url]] < span id = "url" ></ span >
@ -677,12 +680,10 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
デフォルト値は `['http', 'https']` であり、`http` と `https` の URL がともに有効と見なされることを意味します。
- `defaultScheme` : 入力値がスキームの部分を持たないときに前置されるデフォルトの URI スキーム。
デフォルト値は `null` であり、入力値を修正しないことを意味します。
- `enableIDN` : バリデータが IDN (国際化ドメイン名) を考慮すべきか否か。
デフォルト値は `false` 。
- `enableIDN` : バリデータが IDN (国際化ドメイン名) を考慮すべきか否か。デフォルト値は `false` 。
IDN の検証を使用するためには、`intl` PHP 拡張をインストールして有効化する必要があることに注意してください。
そうしないと、例外が投げられます。
> Note: このバリデータは URL スキームとホスト部分が正しいものであることを検証します。
URL の残りの部分はチェックしません。また、XSS や他の攻撃に対して防御するように設計されてもいません。
アプリケーション開発における脅威に対する防御について更に学習するために
[セキュリティのベスト・プラクティス ](security-best-practices.md ) を参照して下さい。
アプリケーション開発における脅威に対する防御について更に学習するために[セキュリティのベスト・プラクティス](security-best-practices.md) を参照して下さい。