1 フォロワー

クラス yii\validators\Validator

継承yii\validators\Validator » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable
サブクラスyii\captcha\CaptchaValidator, yii\validators\BooleanValidator, yii\validators\CompareValidator, yii\validators\DateValidator, yii\validators\DefaultValueValidator, yii\validators\EachValidator, yii\validators\EmailValidator, yii\validators\ExistValidator, yii\validators\FileValidator, yii\validators\FilterValidator, yii\validators\ImageValidator, yii\validators\InlineValidator, yii\validators\IpValidator, yii\validators\NumberValidator, yii\validators\RangeValidator, yii\validators\RegularExpressionValidator, yii\validators\RequiredValidator, yii\validators\SafeValidator, yii\validators\StringValidator, yii\validators\TrimValidator, yii\validators\UniqueValidator, yii\validators\UrlValidator
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/validators/Validator.php

Validatorはすべてのバリデーターの基本クラスです。

子クラスは、実際のデータ検証のロジックを提供するために、validateValue() メソッドおよび/または validateAttribute() メソッドをオーバーライドする必要があります。子クラスは、クライアント側の検証サポートを提供するために、clientValidateAttribute() をオーバーライドすることもできます。

Validatorは、短い名前を使用して参照できる組み込みバリデーターのセットを宣言します。それらは次のようにリストされています。

Validatorの詳細および使用方法については、バリデーターに関するガイド記事を参照してください。

公開プロパティ

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

プロパティ タイプ 説明 定義元
$attributeNames array 属性名。 yii\validators\Validator
$attributes array|string このバリデーターで検証される属性。 yii\validators\Validator
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$builtInValidators array 組み込みバリデーターのリスト(名前 => クラスまたは構成) yii\validators\Validator
$enableClientValidation boolean このバリデーターのクライアント側検証を有効にするかどうか。 yii\validators\Validator
$except array|string バリデーターを適用すべきでないシナリオ。 yii\validators\Validator
$isEmpty callable|null isEmpty() のデフォルト実装を置き換える PHP 呼び出し可能。 yii\validators\Validator
$message string|null ユーザー定義のエラーメッセージ。 yii\validators\Validator
$on array|string バリデーターを適用できるシナリオ。 yii\validators\Validator
$skipOnEmpty boolean 属性値が null または空の文字列の場合、この検証規則をスキップするかどうか。 yii\validators\Validator
$skipOnError boolean 検証対象の属性が、前の規則に従ってすでにいくつかの検証エラーがある場合、この検証規則をスキップするかどうか。 yii\validators\Validator
$validationAttributes array|null 属性名のリスト。 yii\validators\Validator
$when callable|null このバリデーターを適用するかどうかを決定する戻り値を持つ PHP 呼び出し可能。 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\Validator
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\Validator
validateAttributes() 指定されたオブジェクトを検証します。 yii\validators\Validator

保護されたメソッド

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

メソッド 説明 定義元
formatMessage() I18Nを使用してメッセージをフォーマットします。または、\Yii::$appが利用できない場合は単純な strtr を使用します。 yii\validators\Validator
validateValue() 値を検証します。 yii\validators\Validator

プロパティの詳細

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

$attributeNames パブリックプロパティ

属性名。

public 配列 $attributeNames null
$attributes パブリックプロパティ

このバリデーターによって検証される属性。複数の属性を指定する場合は、配列として指定してください。単一の属性の場合は、文字列または配列を使用できます。

$builtInValidators パブリック静的プロパティ

組み込みバリデーターのリスト(名前 => クラスまたは構成)

public static 配列 $builtInValidators = [
    
'boolean' => 'yii\validators\BooleanValidator',
    
'captcha' => 'yii\captcha\CaptchaValidator',
    
'compare' => 'yii\validators\CompareValidator',
    
'date' => 'yii\validators\DateValidator',
    
'datetime' => [
        
'class' => 'yii\validators\DateValidator',
        
'type' => \yii\validators\DateValidator::TYPE_DATETIME,
    ],
    
'time' => [
        
'class' => 'yii\validators\DateValidator',
        
'type' => \yii\validators\DateValidator::TYPE_TIME,
    ],
    
'default' => 'yii\validators\DefaultValueValidator',
    
'double' => 'yii\validators\NumberValidator',
    
'each' => 'yii\validators\EachValidator',
    
'email' => 'yii\validators\EmailValidator',
    
'exist' => 'yii\validators\ExistValidator',
    
'file' => 'yii\validators\FileValidator',
    
'filter' => 'yii\validators\FilterValidator',
    
'image' => 'yii\validators\ImageValidator',
    
'in' => 'yii\validators\RangeValidator',
    
'integer' => [
        
'class' => 'yii\validators\NumberValidator',
        
'integerOnly' => true,
    ],
    
'match' => 'yii\validators\RegularExpressionValidator',
    
'number' => 'yii\validators\NumberValidator',
    
'required' => 'yii\validators\RequiredValidator',
    
'safe' => 'yii\validators\SafeValidator',
    
'string' => 'yii\validators\StringValidator',
    
'trim' => [
        
'class' => 'yii\validators\TrimValidator',
        
'skipOnArray' => true,
    ],
    
'unique' => 'yii\validators\UniqueValidator',
    
'url' => 'yii\validators\UrlValidator',
    
'ip' => 'yii\validators\IpValidator',
]
$enableClientValidation パブリックプロパティ

このバリデーターのクライアントサイド検証を有効にするかどうか。実際のクライアントサイド検証は、clientValidateAttribute() によって返される JavaScript コードを介して行われます。このメソッドが null を返す場合、このプロパティが true であっても、このバリデーターによるクライアントサイド検証は行われません。

$except パブリックプロパティ

バリデーターを適用すべきでないシナリオ。複数のシナリオを指定する場合は、配列として指定してください。単一のシナリオの場合は、文字列または配列を使用できます。

public 配列|文字列 $except = []
$isEmpty public プロパティ

isEmpty() のデフォルト実装を置き換える PHP の callable です。設定されていない場合、値が空かどうかを確認するために isEmpty() が使用されます。callable のシグネチャは function ($value) とする必要があり、値が空かどうかを示すブール値を返します。

public callable|null $isEmpty null
$message public プロパティ

ユーザー定義のエラーメッセージです。バリデーターによって適切に置き換えられる以下のプレースホルダーを含めることができます。

  • {attribute}: 検証される属性のラベル
  • {value}: 検証される属性の値

特定の検証条件が満たされない場合に使用されるエラーメッセージについては、一部のバリデーターで他のプロパティが導入される可能性があることに注意してください。これらのプロパティの詳細については、個々のクラスの API ドキュメントを参照してください。慣例として、このプロパティは、最も重要な検証条件が満たされない場合に使用される主要なエラーメッセージを表します。

public string|null $message null
$on public プロパティ

バリデーターが適用されるシナリオ。複数のシナリオの場合、配列として指定してください。単一のシナリオの場合、文字列または配列のいずれかを使用できます。

public array|string $on = []
$skipOnEmpty public プロパティ

属性値が null または空の文字列の場合、この検証ルールをスキップするかどうか。このプロパティは、yii\base\Model を検証する場合にのみ使用されます。

public boolean $skipOnEmpty true
$skipOnError public プロパティ

検証対象の属性に、前のルールに従って既に検証エラーがある場合、この検証ルールをスキップするかどうか。デフォルトは true です。

public boolean $skipOnError true
$validationAttributes public プロパティ

属性名のリスト。

$when public プロパティ

このバリデーターを適用するかどうかを決定する、戻り値を持つ PHP の callable です。callable のシグネチャは function ($model, $attribute) とする必要があり、$model$attribute は、現在検証中のモデルと属性を参照します。callable はブール値を返す必要があります。

このプロパティは、主にサーバー側の条件付き検証をサポートするために提供されています。このプロパティが設定されていない場合、このバリデーターは常にサーバー側で適用されます。

次の例では、現在選択されている国が米国の場合にのみバリデーターを有効にします

function ($model) {
    return $model->country == Country::USA;
}

$whenClient も参照してください。

public callable|null $when null
$whenClient public プロパティ

このバリデーターをクライアント側で適用するかどうかを決定する、戻り値を持つ JavaScript 関数名です。関数のシグネチャは function (attribute, value) とする必要があり、attribute は検証される属性を記述するオブジェクト(clientValidateAttribute() を参照)であり、value は属性の現在の値です。

このプロパティは、主にクライアント側の条件付き検証をサポートするために提供されています。このプロパティが設定されていない場合、このバリデーターは常にクライアント側で適用されます。

次の例では、現在選択されている国が米国の場合にのみバリデーターを有効にします

function (attribute, value) {
    return $('#country').val() === 'USA';
}

$when も参照してください。

public string|null $whenClient null

メソッドの詳細

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

__call() public メソッド

定義元: yii\base\Component::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、名前付きメソッドを持つアタッチされたビヘイビアがあるかどうかを確認し、存在する場合はそれを実行します。

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

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

メソッド名

$params array

メソッド パラメーター

return mixed

メソッドの戻り値

throws 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()

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

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

  • ゲッターによって定義されたプロパティ:ゲッターの結果を返します
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を返します

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

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

public mixed __get ( $name )
$name string

プロパティ名

return mixed

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

throws yii\base\UnknownPropertyException

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

throws 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 を返します

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

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

public boolean __isset ( $name )
$name string

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

return 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" という名前のビヘイビアをアタッチします
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を設定します

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

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

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

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

$value mixed

プロパティ値

throws yii\base\UnknownPropertyException

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

throws 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 に設定します

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

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

public void __unset ( $name )
$name string

プロパティ名

throws 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 メソッド

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

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

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() に渡してビヘイビアオブジェクトを作成するオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

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

            
attachBehaviors() public メソッド

定義元: 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 メソッド

定義元: yii\base\Component::behaviors()

このコンポーネントが振る舞うべきビヘイビアのリストを返します。

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

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

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

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

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

public array behaviors ( )
return array

ビヘイビアの設定。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

定義元: yii\base\Component::canGetProperty()

プロパティが読み取り可能かどうかを示す値を返します。

プロパティが読み取り可能であるのは、次のいずれかの場合です。

  • クラスに、指定された名前に関連付けられたゲッターメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合($checkBehaviors が true の場合)。

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

return 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 メソッド

定義元: yii\base\Component::canSetProperty()

プロパティが設定可能かどうかを示す値を返します。

プロパティが書き込み可能であるのは、次のいずれかの場合です。

  • クラスに、指定された名前に関連付けられたセッターメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合($checkBehaviors が true の場合)。

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

return 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 メソッド
2.0.14 以降は非推奨。PHP >=5.5 では、代わりに ::class を使用してください。

定義元: yii\base\BaseObject::className()

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

public static string className ( )
return string

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

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

            
clientValidateAttribute() public メソッド

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

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

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

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

  • attribute: 検証される属性を記述するオブジェクト。
  • value: 検証される値。
  • messages: 属性の検証エラーメッセージを保持するために使用される配列。
  • deferred: 非同期検証用の遅延オブジェクトを保持するために使用される配列
  • $form: 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

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

return string|null

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

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

            
createValidator() public static メソッド

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

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

バリデーターの型。これは次のいずれかになります。

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

検証するデータモデル。

$attributes array|string

検証する属性のリスト。これは、属性名の配列またはコンマ区切りの属性名の文字列のいずれかになります。

$params array

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

return 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

ビヘイビアの名前。

return 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 から利用可能)

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 から利用可能)

先頭の ! 文字を除いた、クリーンな属性名を返します。

public array getAttributeNames ( )
return 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

ビヘイビア名

return 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 ( )
return yii\base\Behavior[]

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

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

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

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

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

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

検証中のモデル

$attribute string

検証中の属性名

return array

クライアント側のバリデーションオプション

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

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

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

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

検証される属性のリスト。

  • これが null の場合、結果は getAttributeNames() と同じになります。
  • これが文字列または配列の場合、getAttributeNames() と指定された属性の共通部分が返されます。
return 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

イベント名

return 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

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

return 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

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

return 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();
    $this->attributes = (array) $this->attributes;
    $this->on = (array) $this->on;
    $this->except = (array) $this->except;
}

            
isActive() public メソッド

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

バリデーターがアクティブなのは

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

シナリオ名

return boolean

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

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

            
isEmpty() public メソッド

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

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

public boolean isEmpty ( $value )
$value mixed

チェックする値

return 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 の場合、名前付きイベントにアタッチされたすべてのハンドラが削除されます。

return 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]);
    }
}

            
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 メソッド

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

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

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

検証するデータ値。

$error string|null

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

return 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)
{
    $result = $this->validateValue($model->$attribute);
    if (!empty($result)) {
        $this->addError($model, $attribute, $result[0], $result[1]);
    }
}

            
validateAttributes() public メソッド

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

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

検証するデータ値。

return 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 を返す必要があります。

throws yii\base\NotSupportedException

バリデーターがモデルなしのデータ検証をサポートしていない場合

                protected function validateValue($value)
{
    throw new NotSupportedException(get_class($this) . ' does not support validateValue().');
}