0 フォロワー

クラス yii\validators\DateValidator

継承yii\validators\DateValidator » yii\validators\Validator » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable
利用可能バージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/validators/DateValidator.php

DateValidator は、属性が適切な$formatで日付、時刻、または日時を表しているかどうかを検証します。

また、$formatがICU形式の時刻パターンを使用するように設定されている場合、例として12 мая 2014のように、特定の$localeで国際化された日付を解析することもできます。

$min$maxを使用して、特定の範囲内で日付を制限することも可能です。

日付の検証に加えて、$timestampAttributeを使用して設定できる機械可読形式として、解析されたタイムスタンプをエクスポートすることもできます。時間情報を含む値(日付のみの値ではない)の場合、タイムゾーンも調整されます。$timeZoneプロパティで指定されたものが入力値のタイムゾーンと想定され、ターゲットタイムゾーンは$timestampAttributeFormatが`null`(UNIXタイムスタンプとしてエクスポート)の場合、またはそれ以外の場合$timestampAttributeTimeZoneがUTCになります。タイムゾーンの変換を回避する場合は、$timeZone$timestampAttributeTimeZoneが同じであることを確認してください。

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$attributeNames array 属性名。 yii\validators\Validator
$attributes array|string このバリデーターによって検証される属性。 yii\validators\Validator
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$builtInValidators array ビルトインバリデーターのリスト(名前 => クラスまたは設定) yii\validators\Validator
$defaultTimeZone string フォーマットに時間部分が指定されていない場合に、解析に使用されるデフォルトのタイムゾーン。 yii\validators\DateValidator
$enableClientValidation boolean このバリデーターのクライアントサイド検証を有効にするかどうか。 yii\validators\Validator
$except array|string バリデーターを適用しないシナリオ。 yii\validators\Validator
$format string|null 検証される値が従うべき日付形式。 yii\validators\DateValidator
$isEmpty callable|null isEmpty()のデフォルトの実装を置き換えるPHPの呼び出し可能オブジェクト。 yii\validators\Validator
$locale string|null 日付解析のローカライズに使用されるロケールID。 yii\validators\DateValidator
$max integer|string|null 日付の上限。 yii\validators\DateValidator
$maxString string|null エラーメッセージに表示する上限のユーザーフレンドリーな値。 yii\validators\DateValidator
$message string|null ユーザー定義のエラーメッセージ。 yii\validators\Validator
$min integer|string|null 日付の下限。 yii\validators\DateValidator
$minString string|null エラーメッセージに表示する下限のユーザーフレンドリーな値。 yii\validators\DateValidator
$on array|string バリデーターを適用できるシナリオ。 yii\validators\Validator
$skipOnEmpty boolean 属性値がnullまたは空文字列の場合、この検証ルールをスキップするかどうか。 yii\validators\Validator
$skipOnError boolean 検証対象の属性に、以前のルールによる検証エラーが既に存在する場合、この検証ルールをスキップするかどうか。 yii\validators\Validator
$strictDateFormat boolean 厳密な日付形式の検証が必要な場合、このパラメーターをtrueに設定します(例:次の形式 'yyyy-MM-dd' の日付のみが検証に合格します: '0011-03-25', '2019-04-30'など)。 yii\validators\DateValidator
$timeZone string|null 日付と時刻の値を解析するために使用するタイムゾーン。 yii\validators\DateValidator
$timestampAttribute string|null 解析結果を受け取る属性の名前。 yii\validators\DateValidator
$timestampAttributeFormat string|null $timestampAttributeを設定する際に使用する形式。 yii\validators\DateValidator
$timestampAttributeTimeZone string $timestampAttribute$timestampAttributeFormatで設定する際に使用するタイムゾーン。 yii\validators\DateValidator
$tooBig string 値が$maxより大きい場合に使用されるユーザー定義のエラーメッセージ。 yii\validators\DateValidator
$tooSmall string 値が$minより小さい場合に使用されるユーザー定義のエラーメッセージ。 yii\validators\DateValidator
$type string バリデーターの型。 yii\validators\DateValidator
$validationAttributes array|null 属性名一覧 yii\validators\Validator
$when callable|null このバリデータが適用されるかどうかを決定するPHPのcallable(呼び出し可能な関数)。 yii\validators\Validator
$whenClient string|null このバリデータがクライアントサイドで適用されるかどうかを決定するJavaScript関数の名前。 yii\validators\Validator

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない、指定された名前のメソッドを呼び出します。 yii\base\Component
__clone() 既存のオブジェクトを複製してオブジェクトが作成された後に、このメソッドが呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているかどうか(定義されていてnullではないか)を確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
addError() 指定された属性に関するエラーをモデルオブジェクトに追加します。 yii\validators\Validator
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
behaviors() このコンポーネントがビヘイビアとして持つべきビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
clientValidateAttribute() クライアントサイドの検証を実行するために必要なJavaScriptを返します。 yii\validators\Validator
createValidator() バリデータオブジェクトを作成します。 yii\validators\Validator
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getAttributeNames() 先頭に!文字がないクリーンな属性名を返します。 yii\validators\Validator
getBehavior() 指定された名前のビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getClientOptions() クライアントサイドの検証オプションを返します。 yii\validators\Validator
getValidationAttributes() このバリデータが適用される属性のリストを返します。 yii\validators\Validator
hasEventHandlers() 指定されたイベントにハンドラがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\validators\DateValidator
isActive() 指定されたシナリオと属性に対してバリデータがアクティブかどうかを示す値を返します。 yii\validators\Validator
isEmpty() 指定された値が空かどうかを確認します。 yii\validators\Validator
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
trigger() イベントをトリガーします。 yii\base\Component
validate() 指定された値を検証します。 yii\validators\Validator
validateAttribute() 単一の属性を検証します。 yii\validators\DateValidator
validateAttributes() 指定されたオブジェクトを検証します。 yii\validators\Validator

保護メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
formatMessage() I18Nを使用してメッセージをフォーマットするか、\Yii::$appが利用できない場合は、単純なstrtrを使用します。 yii\validators\Validator
parseDateValue() 日付文字列をUNIXタイムスタンプに解析します。 yii\validators\DateValidator
validateValue() 値を検証します。 yii\validators\DateValidator

定数

継承された定数を非表示

定数 説明 定義元
TYPE_DATE 'date' intlの短い形式で検証を行う際に、日付値として検証の$typeを指定するための定数。 yii\validators\DateValidator
TYPE_DATETIME 'datetime' intlの短い形式で検証を行う際に、日時値として検証の$typeを指定するための定数。 yii\validators\DateValidator
TYPE_TIME 'time' intlの短い形式で検証を行う際に、時間値として検証の$typeを指定するための定数。 yii\validators\DateValidator

プロパティの詳細

継承されたプロパティを非表示

$defaultTimeZone public property (version 2.0.39以降で利用可能)

時間部分がフォーマットに含まれていない場合に、解析に使用されるデフォルトのタイムゾーン。詳細は$timestampAttributeTimeZoneを参照してください。

public string $defaultTimeZone 'UTC'
$format public property

検証対象の値が従うべき日付形式。これは、ICUマニュアルに記載されている日時パターンです。

あるいは、PHP Datetimeクラスで認識できる形式を表すphp:を接頭辞とした文字列にすることもできます。サポートされている形式については、https://www.php.net/manual/en/datetime.createfromformat.phpを参照してください。

このプロパティが設定されていない場合、デフォルト値はYii::$app->formatter->dateFormatから取得されます。yii\i18n\Formatter::$dateFormatを参照してください。バージョン2.0.8以降、デフォルト値は$typeの値に応じて、Formatterクラスの異なる形式から決定されます。

いくつかの例を示します。

'MM/dd/yyyy' // date in ICU format
'php:m/d/Y' // the same date in PHP format
'MM/dd/yyyy HH:mm' // not only dates but also times can be validated

注記: 使用される基盤となる日付パーサーは、フォーマットによって異なります。PHP intl拡張機能がインストールされている場合、ICUフォーマットを使用すると、入力値の解析にIntlDateFormatterが使用されます。それ以外の場合は、PHPのDateTimeクラスが使用されます。IntlDateFormatterには、12. Mai 201512 мая 2014などの国際的な日付を解析できるという利点がありますが、PHPパーサーは英語のみに限定されます。ただし、PHPパーサーは入力フォーマットに関してより厳格であり、フォーマットphp:d.m.Yに対して12.05.05を受け付けませんが、IntlDateFormatterはフォーマットdd.MM.yyyyに対して受け付けます。IntlDateFormatterを使用する必要がある場合は、最小日付を指定することでこの問題を回避できます。

public string|null $format null
$locale public property

PHP intl拡張機能がインストールされている場合のみ有効な、日付解析に使用されるロケールID。設定されていない場合、formatterのロケールが使用されます。yii\i18n\Formatter::$localeも参照してください。

public string|null $locale null
$max public property (version 2.0.4以降で利用可能)

日付の上限。デフォルトはnullで、上限はありません。これは、UNIXタイムスタンプまたは日時値を表す文字列です。このプロパティが文字列の場合、$formatを使用して解析されます。

日付が大きすぎる場合に使用されるカスタマイズされたメッセージについては、$tooBigも参照してください。

public integer|string|null $max null
$maxString public property (version 2.0.4以降で利用可能)

エラーメッセージに表示する上限のユーザーフレンドリーな値。このプロパティがnullの場合、$maxの値(解析前)が使用されます。

public string|null $maxString null
$min public property (version 2.0.4以降で利用可能)

日付の下限。デフォルトはnullで、下限はありません。これは、UNIXタイムスタンプまたは日時値を表す文字列です。このプロパティが文字列の場合、$formatを使用して解析されます。

日付が小さすぎる場合に使用されるカスタマイズされたメッセージについては、$tooSmallも参照してください。

public integer|string|null $min null
$minString public プロパティ (バージョン 2.0.4 から利用可能)

エラーメッセージに表示する下限値のユーザーフレンドリーな値。このプロパティがnullの場合、$minの値(解析前)が使用されます。

public string|null $minString null
$strictDateFormat public プロパティ (バージョン 2.0.22 から利用可能)

厳密な日付形式検証が必要な場合は、このパラメーターをtrueに設定します(例: 'yyyy-MM-dd' の形式では、'0011-03-25'、'2019-04-30' などだけが検証を通過し、'18-05-15'、'2017-Mar-14' などは、このパラメーターがfalseに設定されている場合に検証を通過します)。

public boolean $strictDateFormat false
$timeZone public プロパティ

日付と時刻の値を解析するために使用するタイムゾーン。 date_default_timezone_set() に渡すことができる任意の値です(例:UTCEurope/BerlinAmerica/Chicago)。使用可能なタイムゾーンについては、PHPマニュアルを参照してください。このプロパティが設定されていない場合、yii\base\Application::$timeZone が使用されます。

public string|null $timeZone null
$timestampAttribute public プロパティ

解析結果を受け取る属性の名前。このプロパティがnullではなく、検証が成功した場合、名前付き属性は解析結果を受け取ります。

これは、検証対象の属性と同じ属性にすることができます。この場合、検証が成功した後、元の値はタイムスタンプ値で上書きされます。

このプロパティを使用する場合、入力値はUNIXタイムスタンプに変換されます。定義上、これはデフォルトのUTCタイムゾーンであるため、入力タイムゾーンからデフォルトのタイムゾーンへの変換が行われます。デフォルトのタイムゾーンを変更する場合は、$defaultTimeZoneプロパティを設定します。$timestampAttributeFormatを定義すると、$timestampAttributeTimeZone'UTC'以外の値に設定することで、変換をさらに制御できます。

参照

$timestampAttributeFormat public プロパティ (バージョン 2.0.4 から利用可能)

$timestampAttributeを設定する際に使用するフォーマット。$formatと同様にフォーマットを指定できます。

設定されていない場合、$timestampAttributeにはUNIXタイムスタンプが格納されます。$timestampAttributeが設定されていない場合、このプロパティは無視されます。

参照

$timestampAttributeTimeZone public プロパティ (バージョン 2.0.4 から利用可能)

$timestampAttribute$timestampAttributeFormatで設定する際に使用するタイムゾーン。デフォルトはUTCです。

date_default_timezone_set() に渡すことができる任意の値です(例:UTCEurope/BerlinAmerica/Chicago)。使用可能なタイムゾーンについては、PHPマニュアルを参照してください。

$timestampAttributeFormatが設定されていない場合、このプロパティは無視されます。

参照: $timestampAttributeFormat.

$tooBig public プロパティ (バージョン 2.0.4 から利用可能)

値が$maxより大きい場合に使用されるユーザー定義のエラーメッセージ。

public string $tooBig null
$tooSmall public プロパティ (バージョン 2.0.4 から利用可能)

値が$minより小さい場合に使用されるユーザー定義のエラーメッセージ。

public string $tooSmall null
$type public プロパティ (バージョン 2.0.8 から利用可能)

バリデータの種類。日付、時刻、または日時値のいずれを検証するかを示します。このプロパティは$formatのデフォルト値に影響を与え、$formatがintlの短い形式(shortmediumlongfull)のいずれかの場合にも、正しい動作を設定します。

これは、PHP intl 拡張機能がインストールされている場合にのみ有効です。

このプロパティには、次の値を設定できます。

  • TYPE_DATE - (デフォルト)日付値のみの検証用。つまり、時間範囲を含まない値のみが有効です。
  • TYPE_DATETIME - 日付部分と時間部分の両方を含む日時値の検証用。
  • TYPE_TIME - 日付情報を含まない時間値の検証用。
public string $type self::TYPE_DATE

メソッドの詳細

継承されたメソッドを非表示

__call() publicメソッド

定義位置: yii\base\Component::__call()

クラスメソッドではない、指定された名前のメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアに指定されたメソッドが存在するかどうかをチェックし、存在する場合は実行します。

これはPHPのマジックメソッドであり、未知のメソッドが呼び出された際に暗黙的に呼び出されるため、直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 yii\base\UnknownMethodException

未知のメソッドを呼び出した場合

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() publicメソッド

定義位置: yii\base\Component::__clone()

既存のオブジェクトを複製してオブジェクトが作成された後に、このメソッドが呼び出されます。

ビヘイビアは古いオブジェクトにアタッチされているため、すべてのビヘイビアを削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() publicメソッド

定義位置: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つの処理を行います。

  • 与えられた設定$configを使用してオブジェクトを初期化します。
  • init()を呼び出します。

このメソッドを子クラスでオーバーライドする場合は、

  • コンストラクタの最後の引数を、ここにある$configのように設定配列にすることをお勧めします。
  • コンストラクタの最後に親の実装を呼び出してください。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() publicメソッド

定義位置: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、以下の順序でチェックし、それに応じて動作します。

  • ゲッターで定義されたプロパティ: ゲッターの結果を返す
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を返す

これはPHPのマジックメソッドであり、`$value = $component->property;`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

詳しくは __set() を参照してください。

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

プロパティ値またはビヘイビアのプロパティの値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが書き込み専用の場合。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() publicメソッド

定義位置: yii\base\Component::__isset()

プロパティが設定されているかどうか(定義されていてnullではないか)を確認します。

このメソッドは、以下の順序でチェックし、それに応じて動作します。

  • セッターで定義されたプロパティ: プロパティが設定されているかどうかを返す
  • ビヘイビアのプロパティ: プロパティが設定されているかどうかを返す
  • 存在しないプロパティには`false`を返す

これはPHPのマジックメソッドであり、`isset($component->property)`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

詳しくは https://www.php.net/manual/en/function.isset.php を参照してください。

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

戻り値 boolean

指定されたプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() publicメソッド

定義位置: yii\base\Component::__set()

コンポーネントプロパティの値を設定します。

このメソッドは、以下の順序でチェックし、それに応じて動作します。

  • セッターで定義されたプロパティ: プロパティ値を設定する
  • "on xyz"形式のイベント: "xyz"イベントにハンドラーをアタッチする
  • "as xyz"形式のビヘイビア: "xyz"という名前のビヘイビアをアタッチする
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を設定する

これはPHPのマジックメソッドであり、`$component->property = $value;`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

詳しくは __get() を参照してください。

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティ値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() publicメソッド

定義位置: yii\base\Component::__unset()

コンポーネントプロパティをnullに設定します。

このメソッドは、以下の順序でチェックし、それに応じて動作します。

  • セッターで定義されたプロパティ: プロパティ値をnullに設定する
  • ビヘイビアのプロパティ: プロパティ値をnullに設定する

これはPHPのマジックメソッドであり、`unset($component->property)`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

詳しくは https://www.php.net/manual/en/function.unset.php を参照してください。

public void __unset ( $name )
$name string

プロパティ名

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
addError() publicメソッド

定義位置: yii\validators\Validator::addError()

指定された属性に関するエラーをモデルオブジェクトに追加します。

これは、メッセージの選択と国際化を行うヘルパーメソッドです。

public void addError ( $model, $attribute, $message, $params = [] )
$model yii\base\Model

検証対象のデータモデル

$attribute string

検証対象の属性

$message string

エラーメッセージ

$params array

エラーメッセージ内のプレースホルダーの値

                public function addError($model, $attribute, $message, $params = [])
{
    $params['attribute'] = $model->getAttributeLabel($attribute);
    if (!isset($params['value'])) {
        $value = $model->$attribute;
        if (is_array($value)) {
            $params['value'] = 'array()';
        } elseif (is_object($value) && !method_exists($value, '__toString')) {
            $params['value'] = '(object)';
        } else {
            $params['value'] = $value;
        }
    }
    $model->addError($attribute, $this->formatMessage($message, $params));
}

            
attachBehavior() publicメソッド

定義位置: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、指定された設定に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach() メソッドを呼び出すことで、このコンポーネントにビヘイビアオブジェクトがアタッチされます。

こちらも参照してください detachBehavior().

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの設定。以下のいずれかになります。

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • ビヘイビアオブジェクトを作成するために Yii::createObject() に渡されるオブジェクト設定配列。
戻り値 yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public method

定義されている場所: yii\base\Component::attachBehaviors()

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアは、その名前でインデックス付けされ、yii\base\Behavior オブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための設定配列のいずれかである必要があります。

こちらも参照してください attachBehavior().

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() public method

定義されている場所: yii\base\Component::behaviors()

このコンポーネントがビヘイビアとして持つべきビヘイビアのリストを返します。

子クラスはこのメソッドをオーバーライドして、動作させたいビヘイビアを指定できます。

このメソッドの戻り値は、ビヘイビア名でインデックス付けされたビヘイビアオブジェクトまたは設定の配列である必要があります。ビヘイビアの設定は、ビヘイビアクラスを指定する文字列、または以下の構造の配列のいずれかになります。

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスは yii\base\Behavior から拡張する必要があることに注意してください。ビヘイビアは名前付きで、または匿名でアタッチできます。配列キーとして名前が使用されている場合、この名前を使用して、後で getBehavior() でビヘイビアを取得したり、detachBehavior() でデタッチしたりできます。匿名のビヘイビアは取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、(オンデマンドで)自動的にコンポーネントにアタッチされます。

public array behaviors ( )
戻り値 array

ビヘイビアの設定。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public method

定義されている場所: yii\base\Component::canGetProperty()

プロパティを読み取ることができるかどうかを示す値を返します。

プロパティは、以下の場合に読み取ることができます。

  • クラスに、指定された名前と関連付けられたゲッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに、指定された名前のメンバ変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合($checkBehaviors が true の場合)。

こちらも参照してください canSetProperty().

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティを読み取ることができるかどうか

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public method

定義されている場所: yii\base\Component::canSetProperty()

プロパティを設定できるかどうかを示す値を返します。

プロパティは、以下の場合に書き込むことができます。

  • クラスに、指定された名前と関連付けられたセッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに、指定された名前のメンバ変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合($checkBehaviors が true の場合)。

こちらも参照してください canGetProperty().

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティを書き込むことができるかどうか

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public static method
2.0.14以降非推奨。PHP >= 5.5では、代わりに::classを使用してください。

定義されている場所: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
戻り値 string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
clientValidateAttribute() public method

定義されている場所: yii\validators\Validator::clientValidateAttribute()

クライアントサイドの検証を実行するために必要なJavaScriptを返します。

getClientOptions() を呼び出して、クライアントサイド検証のオプション配列を生成します。

バリデータがクライアントサイド検証をサポートできる場合、JavaScript検証コードを返すようにこのメソッドをオーバーライドできます。

以下のJavaScript変数は事前に定義されており、検証コードで使用できます。

  • attribute: 検証対象の属性を表すオブジェクト。
  • value: 検証対象の値。
  • messages: 属性の検証エラーメッセージを保持するために使用される配列。
  • deferred: 非同期検証のための遅延オブジェクトを保持するために使用される配列
  • $form: フォーム要素を含むjQueryオブジェクト

attributeオブジェクトには、以下のプロパティが含まれています。

  • id: フォーム内の属性を一意に識別するID(例: "loginform-username")。
  • name: 属性名または式(例: テーブル入力の場合は "[0]content")。
  • container: 入力フィールドのコンテナのjQueryセレクタ。
  • input: フォームのコンテキストにおける入力フィールドのjQueryセレクタ。
  • error: コンテナのコンテキストにおけるエラータグのjQueryセレクタ。
  • status: 入力フィールドの状態、0: 空、入力済みでない、1: 検証済み、2: 検証待ち、3: 検証中

参照

public string|null clientValidateAttribute ( $model, $attribute, $view )
$model yii\base\Model

検証対象のデータモデル

$attribute string

検証対象の属性の名前。

$view yii\web\View

このバリデータが適用されたモデルフォームを含むビューまたはビューファイルのレンダリングに使用されるビューオブジェクト。

戻り値 string|null

クライアントサイド検証スクリプト。バリデータがクライアントサイド検証をサポートしていない場合はNull。

                public function clientValidateAttribute($model, $attribute, $view)
{
    return null;
}

            
createValidator() public static method

定義されている場所: yii\validators\Validator::createValidator()

バリデータオブジェクトを作成します。

public static yii\validators\Validator createValidator ( $type, $model, $attributes, $params = [] )
$type string|Closure

バリデータの種類。以下のいずれかになります。

  • $builtInValidatorsにリストされている組み込みバリデータ名。
  • モデルクラスのメソッド名。
  • 匿名関数。
  • バリデータクラス名。
$model yii\base\Model

検証対象のデータモデル。

$attributes array|string

検証対象の属性一覧。属性名の配列、またはカンマ区切りの属性名の文字列のいずれかです。

$params array

バリデータのプロパティに適用される初期値。

戻り値 yii\validators\Validator

バリデータ

                public static function createValidator($type, $model, $attributes, $params = [])
{
    $params['attributes'] = $attributes;
    if ($type instanceof \Closure) {
        $params['class'] = __NAMESPACE__ . '\InlineValidator';
        $params['method'] = $type;
    } elseif (!isset(static::$builtInValidators[$type]) && $model->hasMethod($type)) {
        // method-based validator
        $params['class'] = __NAMESPACE__ . '\InlineValidator';
        $params['method'] = [$model, $type];
    } else {
        unset($params['current']);
        if (isset(static::$builtInValidators[$type])) {
            $type = static::$builtInValidators[$type];
        }
        if (is_array($type)) {
            $params = array_merge($type, $params);
        } else {
            $params['class'] = $type;
        }
    }
    return Yii::createObject($params);
}

            
detachBehavior() publicメソッド

定義位置: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

戻り値 yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合はnull。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() publicメソッド

定義位置: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() publicメソッド

定義位置: yii\base\Component::ensureBehaviors()

behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
formatMessage() protectedメソッド (バージョン2.0.12から使用可能)

定義位置: yii\validators\Validator::formatMessage()

I18Nを使用してメッセージをフォーマットするか、\Yii::$appが利用できない場合は、単純なstrtrを使用します。

protected string formatMessage ( $message, $params )
$message string
$params array

                protected function formatMessage($message, $params)
{
    if (Yii::$app !== null) {
        return \Yii::$app->getI18n()->format($message, $params, Yii::$app->language);
    }
    $placeholders = [];
    foreach ((array) $params as $name => $value) {
        $placeholders['{' . $name . '}'] = $value;
    }
    return ($placeholders === []) ? $message : strtr($message, $placeholders);
}

            
getAttributeNames() publicメソッド (バージョン2.0.12から使用可能)

定義位置: yii\validators\Validator::getAttributeNames()

先頭に!文字がないクリーンな属性名を返します。

public array getAttributeNames ( )
戻り値 array

属性名。

                public function getAttributeNames()
{
    return array_map(function ($attribute) {
        return ltrim($attribute, '!');
    }, $this->attributes);
}

            
getBehavior() publicメソッド

定義位置: yii\base\Component::getBehavior()

指定された名前のビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name string

ビヘイビア名

戻り値 yii\base\Behavior|null

ビヘイビアオブジェクト。ビヘイビアが存在しない場合はnull。

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() publicメソッド

定義位置: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
戻り値 yii\base\Behavior[]

このコンポーネントにアタッチされているビヘイビアの一覧。

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getClientOptions() publicメソッド (バージョン2.0.11から使用可能)

定義位置: yii\validators\Validator::getClientOptions()

クライアントサイドの検証オプションを返します。

このメソッドは通常、clientValidateAttribute()から呼び出されます。クライアント側の検証に渡されるオプションを変更するために、このメソッドをオーバーライドすることができます。

public array getClientOptions ( $model, $attribute )
$model yii\base\Model

検証対象のモデル

$attribute string

検証対象の属性名

戻り値 array

クライアント側の検証オプション

                public function getClientOptions($model, $attribute)
{
    return [];
}

            
getValidationAttributes() publicメソッド (バージョン2.0.16から使用可能)

定義位置: yii\validators\Validator::getValidationAttributes()

このバリデータが適用される属性のリストを返します。

public array|null getValidationAttributes ( $attributes null )
$attributes array|string|null

検証対象の属性一覧。

  • これがnullの場合、結果はgetAttributeNames()と等しくなります。
  • これが文字列または配列の場合、getAttributeNames()と指定された属性の共通部分が返されます。
戻り値 array|null

属性名一覧

                public function getValidationAttributes($attributes = null)
{
    if ($attributes === null) {
        return $this->getAttributeNames();
    }
    if (is_scalar($attributes)) {
        $attributes = [$attributes];
    }
    $newAttributes = [];
    $attributeNames = $this->getAttributeNames();
    foreach ($attributes as $attribute) {
        // do not strict compare, otherwise int attributes would fail due to to string conversion in getAttributeNames() using ltrim().
        if (in_array($attribute, $attributeNames, false)) {
            $newAttributes[] = $attribute;
        }
    }
    return $newAttributes;
}

            
hasEventHandlers() publicメソッド

定義位置: yii\base\Component::hasEventHandlers()

指定されたイベントにハンドラがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

戻り値 boolean

イベントにハンドラがアタッチされているかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() publicメソッド

定義位置: yii\base\Component::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

メソッドは、以下の場合に定義されているとみなされます。

  • クラスが指定された名前のメソッドを持つ場合
  • アタッチされたビヘイビアが指定された名前のメソッドを持つ場合($checkBehaviorsがtrueの場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか。

戻り値 boolean

メソッドが定義されているかどうか。

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() publicメソッド

定義場所: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティは、以下の場合に定義済みとみなされます。

  • 指定された名前と関連付けられたゲッターまたはセッターメソッドがクラスに存在する場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに、指定された名前のメンバ変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前のプロパティが存在する場合($checkBehaviors が true の場合)。

参照

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() publicメソッド

オブジェクトを初期化します。

このメソッドは、オブジェクトが指定された設定で初期化された後、コンストラクタの最後に呼び出されます。

public void init ( )

                public function init()
{
    parent::init();
    if ($this->message === null) {
        $this->message = Yii::t('yii', 'The format of {attribute} is invalid.');
    }
    if ($this->format === null) {
        if ($this->type === self::TYPE_DATE) {
            $this->format = Yii::$app->formatter->dateFormat;
        } elseif ($this->type === self::TYPE_DATETIME) {
            $this->format = Yii::$app->formatter->datetimeFormat;
        } elseif ($this->type === self::TYPE_TIME) {
            $this->format = Yii::$app->formatter->timeFormat;
        } else {
            throw new InvalidConfigException('Unknown validation type set for DateValidator::$type: ' . $this->type);
        }
    }
    if ($this->locale === null) {
        $this->locale = Yii::$app->language;
    }
    if ($this->timeZone === null) {
        $this->timeZone = Yii::$app->timeZone;
    }
    if ($this->min !== null && $this->tooSmall === null) {
        $this->tooSmall = Yii::t('yii', '{attribute} must be no less than {min}.');
    }
    if ($this->max !== null && $this->tooBig === null) {
        $this->tooBig = Yii::t('yii', '{attribute} must be no greater than {max}.');
    }
    if ($this->maxString === null) {
        $this->maxString = (string)$this->max;
    }
    if ($this->minString === null) {
        $this->minString = (string)$this->min;
    }
    if ($this->max !== null && is_string($this->max)) {
        $timestamp = $this->parseDateValue($this->max);
        if ($timestamp === false) {
            throw new InvalidConfigException("Invalid max date value: {$this->max}");
        }
        $this->max = $timestamp;
    }
    if ($this->min !== null && is_string($this->min)) {
        $timestamp = $this->parseDateValue($this->min);
        if ($timestamp === false) {
            throw new InvalidConfigException("Invalid min date value: {$this->min}");
        }
        $this->min = $timestamp;
    }
}

            
isActive() publicメソッド

定義場所: yii\validators\Validator::isActive()

指定されたシナリオと属性に対してバリデータがアクティブかどうかを示す値を返します。

バリデータは、以下の場合にアクティブです。

  • バリデータの on プロパティが空の場合、または
  • バリデータの on プロパティに、指定されたシナリオが含まれている場合。
public boolean isActive ( $scenario )
$scenario string

シナリオ名

戻り値 boolean

バリデータが指定されたシナリオに適用されるかどうか。

                public function isActive($scenario)
{
    return !in_array($scenario, $this->except, true) && (empty($this->on) || in_array($scenario, $this->on, true));
}

            
isEmpty() publicメソッド

定義場所: yii\validators\Validator::isEmpty()

指定された値が空かどうかを確認します。

値が null、空の配列、または空の文字列の場合、値は空とみなされます。このメソッドは PHP の empty() とは異なります。値が 0 の場合は false を返します。

public boolean isEmpty ( $value )
$value mixed

検査する値

戻り値 boolean

値が空かどうか

                public function isEmpty($value)
{
    if ($this->isEmpty !== null) {
        return call_user_func($this->isEmpty, $value);
    }
    return $value === null || $value === [] || $value === '';
}

            
off() publicメソッド

定義場所: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラをデタッチします。

このメソッドは on() の反対です。

注: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラーのみが削除され、このワイルドカードに一致するプレーン名で登録されたハンドラーは残ります。

on() も参照してください。

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラー。null の場合、指定されたイベントにアタッチされたすべてのハンドラーが削除されます。

戻り値 boolean

ハンドラーが見つかり、デタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() publicメソッド

定義場所: yii\base\Component::on()

イベントにイベントハンドラをアタッチします。

イベントハンドラーは、有効なPHPコールバックでなければなりません。いくつかの例を以下に示します。

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラーは、以下のシグネチャで定義する必要があります。

function ($event)

ここで、$event は、イベントに関連付けられたパラメーターを含む yii\base\Event オブジェクトです。

2.0.14以降、イベント名をワイルドカードパターンとして指定できます。

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

off() も参照してください。

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler callable

イベントハンドラー

$data mixed

イベントが発生したときにイベントハンドラーに渡されるデータ。イベントハンドラーが呼び出されると、このデータは yii\base\Event::$data を介してアクセスできます。

$append boolean

既存のハンドラーリストの最後に新しいイベントハンドラーを追加するかどうか。false の場合、新しいハンドラーは既存のハンドラーリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
parseDateValue() protectedメソッド

日付文字列をUNIXタイムスタンプに解析します。

protected integer|false parseDateValue ( $value )
$value mixed

日付を表す文字列

戻り値 integer|false

UNIXタイムスタンプ、または失敗した場合は false

                protected function parseDateValue($value)
{
    // TODO consider merging these methods into single one at 2.1
    return $this->parseDateValueFormat($value, $this->format);
}

            
trigger() publicメソッド

定義場所: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドはイベントの発生を表します。クラスレベルのハンドラーを含む、イベントにアタッチされたすべてのハンドラーを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定されていない場合、デフォルトの yii\base\Event オブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
validate() publicメソッド

定義場所: yii\validators\Validator::validate()

指定された値を検証します。

このメソッドを使用して、データモデルのコンテキスト外で値を検証できます。

public boolean validate ( $value, &$error null )
$value mixed

検証するデータ値。

$error string|null

検証に失敗した場合に返されるエラーメッセージ。

戻り値 boolean

データが有効かどうか。

                public function validate($value, &$error = null)
{
    $result = $this->validateValue($value);
    if (empty($result)) {
        return true;
    }
    list($message, $params) = $result;
    $params['attribute'] = Yii::t('yii', 'the input value');
    if (is_array($value)) {
        $params['value'] = 'array()';
    } elseif (is_object($value)) {
        $params['value'] = 'object';
    } else {
        $params['value'] = $value;
    }
    $error = $this->formatMessage($message, $params);
    return false;
}

            
validateAttribute() publicメソッド

単一の属性を検証します。

子クラスは、実際の検証ロジックを提供するためにこのメソッドを実装する必要があります。

public void validateAttribute ( $model, $attribute )
$model yii\base\Model

検証するデータモデル

$attribute string

検証対象の属性の名前。

                public function validateAttribute($model, $attribute)
{
    $value = $model->$attribute;
    if ($this->isEmpty($value)) {
        if ($this->timestampAttribute !== null) {
            $model->{$this->timestampAttribute} = null;
        }
        return;
    }
    $timestamp = $this->parseDateValue($value);
    if ($timestamp === false) {
        if ($this->timestampAttribute === $attribute) {
            if ($this->timestampAttributeFormat === null) {
                if (is_int($value)) {
                    return;
                }
            } elseif ($this->parseDateValueFormat($value, $this->timestampAttributeFormat) !== false) {
                return;
            }
        }
        $this->addError($model, $attribute, $this->message, []);
    } elseif ($this->min !== null && $timestamp < $this->min) {
        $this->addError($model, $attribute, $this->tooSmall, ['min' => $this->minString]);
    } elseif ($this->max !== null && $timestamp > $this->max) {
        $this->addError($model, $attribute, $this->tooBig, ['max' => $this->maxString]);
    } elseif ($this->timestampAttribute !== null) {
        if ($this->timestampAttributeFormat === null) {
            $model->{$this->timestampAttribute} = $timestamp;
        } else {
            $model->{$this->timestampAttribute} = $this->formatTimestamp($timestamp, $this->timestampAttributeFormat);
        }
    }
}

            
validateAttributes() publicメソッド

定義されている場所: yii\validators\Validator::validateAttributes()

指定されたオブジェクトを検証します。

public void validateAttributes ( $model, $attributes null )
$model yii\base\Model

検証対象のデータモデル

$attributes array|string|null

バリデーション対象の属性のリスト。属性がバリデータに関連付けられていない場合、無視されます。このパラメータがnullの場合、$attributesにリストされているすべての属性がバリデーションされます。

                public function validateAttributes($model, $attributes = null)
{
    $attributes = $this->getValidationAttributes($attributes);
    foreach ($attributes as $attribute) {
        $skip = $this->skipOnError && $model->hasErrors($attribute)
            || $this->skipOnEmpty && $this->isEmpty($model->$attribute);
        if (!$skip) {
            if ($this->when === null || call_user_func($this->when, $model, $attribute)) {
                $this->validateAttribute($model, $attribute);
            }
        }
    }
}

            
validateValue() protectedメソッド

値を検証します。

バリデータクラスは、データモデルのコンテキスト外でデータバリデーションをサポートするために、このメソッドを実装できます。

protected array|null validateValue ( $value )
$value mixed

検証するデータ値。

戻り値 array|null

エラーメッセージと、エラーメッセージに挿入されるパラメータの配列。`php if (!$valid) {

return [$this->message, [
    'param1' => $this->param1,
    'formattedLimit' => Yii::$app->formatter->asShortSize($this->getSizeLimit()),
    'mimeTypes' => implode(', ', $this->mimeTypes),
    'param4' => 'etc...',
]];

}

return null; ` この例では、messageテンプレートに{param1}{formattedLimit}{mimeTypes}{param4}を含めることができます。

データが有効な場合はnullを返す必要があります。

例外 yii\base\NotSupportedException

バリデータがモデルなしのデータバリデーションをサポートしていない場合

                protected function validateValue($value)
{
    $timestamp = $this->parseDateValue($value);
    if ($timestamp === false) {
        return [$this->message, []];
    } elseif ($this->min !== null && $timestamp < $this->min) {
        return [$this->tooSmall, ['min' => $this->minString]];
    } elseif ($this->max !== null && $timestamp > $this->max) {
        return [$this->tooBig, ['max' => $this->maxString]];
    }
    return null;
}