0 フォロワー

クラス yii\validators\NumberValidator

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

NumberValidatorは、属性値が数値であることを検証します。

数値のフォーマットは、$integerPattern または $numberPattern で指定された正規表現と一致する必要があります。オプションで、$max および $min プロパティを設定して、数値が特定の範囲内にあることを確認できます。

公開プロパティ

継承されたプロパティを隠す

プロパティ 説明 定義元
$allowArray boolean 配列型の属性を許可するかどうか。 yii\validators\NumberValidator
$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
$integerOnly boolean 属性値が整数のみであるかどうか。 yii\validators\NumberValidator
$integerPattern string 整数にマッチする正規表現。 yii\validators\NumberValidator
$isEmpty callable|null isEmpty() のデフォルトの実装を置き換える PHP 呼び出し可能オブジェクト。 yii\validators\Validator
$max integer|float|null 数値の上限。 yii\validators\NumberValidator
$message string|null ユーザー定義のエラーメッセージ。 yii\validators\Validator
$min integer|float|null 数値の下限。 yii\validators\NumberValidator
$numberPattern string 数値にマッチする正規表現。 yii\validators\NumberValidator
$on array|string バリデーターを適用できるシナリオ。 yii\validators\Validator
$skipOnEmpty boolean 属性値が null または空の文字列の場合に、この検証ルールをスキップするかどうか。 yii\validators\Validator
$skipOnError boolean 検証対象の属性が、以前のルールによって既に何らかの検証エラーを持っている場合に、この検証ルールをスキップするかどうか。 yii\validators\Validator
$tooBig string 値が $max より大きい場合に使用されるユーザー定義のエラーメッセージ。 yii\validators\NumberValidator
$tooSmall string 値が $min より小さい場合に使用されるユーザー定義のエラーメッセージ。 yii\validators\NumberValidator
$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\NumberValidator
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\NumberValidator
getValidationAttributes() このバリデーターが適用される属性のリストを返します。 yii\validators\Validator
hasEventHandlers() 名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントに対してプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\validators\NumberValidator
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\NumberValidator
validateAttributes() 指定されたオブジェクトを検証します。 yii\validators\Validator

保護されたメソッド

継承されたメソッドを隠す

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

プロパティの詳細

継承されたプロパティを隠す

$allowArray 公開プロパティ (バージョン 2.0.42 から利用可能)

配列型の属性を許可するかどうか。デフォルトは false です。

public boolean $allowArray false
$integerOnly 公開プロパティ

属性値が整数のみであるかどうか。デフォルトは false です。

public boolean $integerOnly false
$integerPattern public プロパティ

整数にマッチする正規表現。

public string $integerPattern '/^[+-]?\d+$/'
$max public プロパティ

数値の上限。デフォルトは null で、上限がないことを意味します。

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

public integer|float|null $max null
$min public プロパティ

数値の下限。デフォルトは null で、下限がないことを意味します。

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

public integer|float|null $min null
$numberPattern public プロパティ

数値のマッチングに使用される正規表現。デフォルトでは、オプションの指数部を持つ浮動小数点数(例:-1.23e-10)にマッチするパターンになっています。

public string $numberPattern '/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/'
$tooBig public プロパティ

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

public string $tooBig null
$tooSmall public プロパティ

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

public string $tooSmall 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()

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

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

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

このメソッドは、$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 でないか)を確認します。

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

  • setterで定義されたプロパティ:プロパティが設定されているかどうかを返す
  • ビヘイビアのプロパティ:プロパティが設定されているかどうかを返す
  • 存在しないプロパティに対して 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 method

定義場所: 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 method

定義場所: 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 method

定義場所: 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 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 ( )
return 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

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

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 method

定義場所: 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:フォーム要素を含む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)
{
    ValidationAsset::register($view);
    $options = $this->getClientOptions($model, $attribute);
    return 'yii.validation.number(value, messages, ' . Json::htmlEncode($options) . ');';
}

            
createValidator() public static メソッド

定義元: 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

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

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 以降で利用可能)

定義元: 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 ( )
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)
{
    $label = $model->getAttributeLabel($attribute);
    $options = [
        'pattern' => new JsExpression($this->integerOnly ? $this->integerPattern : $this->numberPattern),
        'message' => $this->formatMessage($this->message, [
            'attribute' => $label,
        ]),
    ];
    if ($this->min !== null) {
        // ensure numeric value to make javascript comparison equal to PHP comparison
        // https://github.com/yiisoft/yii2/issues/3118
        $options['min'] = is_string($this->min) ? (float) $this->min : $this->min;
        $options['tooSmall'] = $this->formatMessage($this->tooSmall, [
            'attribute' => $label,
            'min' => $this->min,
        ]);
    }
    if ($this->max !== null) {
        // ensure numeric value to make javascript comparison equal to PHP comparison
        // https://github.com/yiisoft/yii2/issues/3118
        $options['max'] = is_string($this->max) ? (float) $this->max : $this->max;
        $options['tooBig'] = $this->formatMessage($this->tooBig, [
            'attribute' => $label,
            'max' => $this->max,
        ]);
    }
    if ($this->skipOnEmpty) {
        $options['skipOnEmpty'] = 1;
    }
    return $options;
}

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

定義元: yii\validators\Validator::getValidationAttributes()

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

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

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

プロパティが定義されているのは、

  • クラスが指定された名前に関連付けられた getter または setter メソッドを持っている場合 (この場合、プロパティ名はケースインセンシティブです)。
  • クラスが指定された名前のメンバ変数を持っている場合($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();
    if ($this->message === null) {
        $this->message = $this->integerOnly ? Yii::t('yii', '{attribute} must be an integer.')
            : Yii::t('yii', '{attribute} must be a number.');
    }
    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}.');
    }
}

            
isActive() public メソッド

定義元: yii\validators\Validator::isActive()

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

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

  • バリデータの 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 メソッド

定義元: yii\validators\Validator::isEmpty()

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

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

定義元: yii\validators\Validator::validate()

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

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

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)
{
    $value = $model->$attribute;
    if (is_array($value) && !$this->allowArray) {
        $this->addError($model, $attribute, $this->message);
        return;
    }
    $values = !is_array($value) ? [$value] : $value;
    foreach ($values as $value) {
        if ($this->isNotNumber($value)) {
            $this->addError($model, $attribute, $this->message);
            return;
        }
        $pattern = $this->integerOnly ? $this->integerPattern : $this->numberPattern;
        if (!preg_match($pattern, StringHelper::normalizeNumber($value))) {
            $this->addError($model, $attribute, $this->message);
        }
        if ($this->min !== null && $value < $this->min) {
            $this->addError($model, $attribute, $this->tooSmall, ['min' => $this->min]);
        }
        if ($this->max !== null && $value > $this->max) {
            $this->addError($model, $attribute, $this->tooBig, ['max' => $this->max]);
        }
    }
}

            
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

検証されるデータ値。

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)
{
    if (is_array($value) && !$this->allowArray) {
        return [$this->message, []];
    }
    $values = !is_array($value) ? [$value] : $value;
    foreach ($values as $sample) {
        if ($this->isNotNumber($sample)) {
            return [$this->message, []];
        }
        $pattern = $this->integerOnly ? $this->integerPattern : $this->numberPattern;
        if (!preg_match($pattern, StringHelper::normalizeNumber($sample))) {
            return [$this->message, []];
        } elseif ($this->min !== null && $sample < $this->min) {
            return [$this->tooSmall, ['min' => $this->min]];
        } elseif ($this->max !== null && $sample > $this->max) {
            return [$this->tooBig, ['max' => $this->max]];
        }
    }
    return null;
}