0 フォロワー

クラス yii\validators\FileValidator

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

FileValidator は、属性が有効なアップロードされたファイルを受信しているかどうかを検証します。

fileinfo PHP 拡張機能を有効にする必要があることに注意してください。

パブリックプロパティ

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

プロパティ 説明 定義元
$attributeNames array 属性名。 yii\validators\Validator
$attributes array|string このバリデーターによって検証される属性。 yii\validators\Validator
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$builtInValidators array 組み込みバリデーターのリスト (名前 => クラスまたは構成) yii\validators\Validator
$checkExtensionByMimeType boolean MIME タイプでファイル タイプ (拡張子) を確認するかどうか。 yii\validators\FileValidator
$enableClientValidation boolean このバリデーターのクライアント側検証を有効にするかどうか。 yii\validators\Validator
$except array|string バリデーターを適用すべきでないシナリオ。 yii\validators\Validator
$extensions array|string|null アップロードが許可されるファイル名拡張子のリスト。 yii\validators\FileValidator
$isEmpty callable|null isEmpty() のデフォルト実装を置き換える PHP 呼び出し可能関数。 yii\validators\Validator
$maxFiles integer 指定された属性が保持できるファイルの最大数。 yii\validators\FileValidator
$maxSize integer|null アップロードされたファイルに必要なバイト数の最大値。 yii\validators\FileValidator
$message string ファイルが正しくアップロードされなかった場合に使用されるエラーメッセージ。 yii\validators\FileValidator
$mimeTypes array|string|null アップロードが許可されるファイル MIME タイプのリスト。 yii\validators\FileValidator
$minFiles integer 指定された属性が保持できるファイルの最小数。 yii\validators\FileValidator
$minSize integer|null アップロードされたファイルに必要なバイト数の最小値。 yii\validators\FileValidator
$on array|string バリデーターを適用できるシナリオ。 yii\validators\Validator
$sizeLimit integer アップロードされたファイルのサイズ制限。 yii\validators\FileValidator
$skipOnEmpty boolean 属性値が null または空の文字列の場合、この検証ルールをスキップするかどうか。 yii\validators\Validator
$skipOnError boolean 検証対象の属性が、以前のルールに従って既に検証エラーがある場合に、この検証ルールをスキップするかどうか。 yii\validators\Validator
$tooBig string アップロードされたファイルが大きすぎる場合に使用されるエラーメッセージ。 yii\validators\FileValidator
$tooFew string 複数のアップロードの数が minFiles より少ない場合に使用されるエラーメッセージ。 yii\validators\FileValidator
$tooMany string 複数のアップロードの数が制限を超える場合に使用されるエラーメッセージ。 yii\validators\FileValidator
$tooSmall string アップロードされたファイルが小さすぎる場合に使用されるエラーメッセージ。 yii\validators\FileValidator
$uploadRequired string ファイルがアップロードされない場合に使用されるエラーメッセージ。 yii\validators\FileValidator
$validationAttributes array|null 属性名のリスト。 yii\validators\Validator
$when callable|null このバリデーターを適用すべきかどうかを返す PHP 呼び出し可能関数。 yii\validators\Validator
$whenClient string|null このバリデーターをクライアント側で適用すべきかどうかを返す JavaScript 関数名。 yii\validators\Validator
$wrongExtension string アップロードされたファイルの拡張子名が $extensions にリストされていない場合に使用されるエラーメッセージ。 yii\validators\FileValidator
$wrongMimeType string ファイルに $mimeTypes プロパティで許可されていない MIME タイプがある場合に使用されるエラーメッセージ。 yii\validators\FileValidator

パブリックメソッド

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

メソッド 説明 定義元
__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\FileValidator
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\FileValidator
getSizeLimit() アップロードされたファイルに許可される最大サイズを返します。 yii\validators\FileValidator
getValidationAttributes() このバリデーターが適用される属性のリストを返します。 yii\validators\Validator
hasEventHandlers() 指定された名前のイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\validators\FileValidator
isActive() 指定されたシナリオと属性に対してバリデーターがアクティブかどうかを示す値を返します。 yii\validators\Validator
isEmpty() 指定された値が空かどうかをチェックします。 yii\validators\FileValidator
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
trigger() イベントをトリガーします。 yii\base\Component
validate() 指定された値を検証します。 yii\validators\Validator
validateAttribute() 単一の属性を検証します。 yii\validators\FileValidator
validateAttributes() 指定されたオブジェクトを検証します。 yii\validators\Validator

保護されたメソッド

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

メソッド 説明 定義元
formatMessage() I18Nを使用してメッセージをフォーマットします。または、\Yii::$appが利用できない場合は、単純なstrtrを使用します。 yii\validators\Validator
getMimeTypeByFile() ファイルパスからMIMEタイプを取得します yii\validators\FileValidator
validateExtension() アップロードされたファイルが、現在のバリデーター設定に従って正しいタイプ(拡張子)を持っているかどうかを確認します。 yii\validators\FileValidator
validateMimeType() $mimeTypesプロパティのリストに対して、$fileのMIMEタイプをチェックします。 yii\validators\FileValidator
validateValue() 値を検証します。 yii\validators\FileValidator

プロパティの詳細

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

$checkExtensionByMimeType public プロパティ

MIMEタイプでファイルタイプ(拡張子)をチェックするかどうか。ファイルMIMEタイプチェックによって生成された拡張子がアップロードされたファイルの拡張子と異なる場合、ファイルは無効と見なされます。

$extensions public プロパティ

アップロードが許可されるファイル名拡張子のリスト。これは、配列またはスペースまたはカンマで区切られたファイル拡張子名で構成される文字列(例:「gif、jpg」)のいずれかになります。拡張子名は大文字と小文字を区別しません。デフォルトはnullで、すべてのファイル名拡張子が許可されることを意味します。

間違ったファイルタイプのカスタムメッセージについては、$wrongExtensionも参照してください。

public array|string|null $extensions null
$maxFiles public プロパティ

指定された属性が保持できるファイルの最大数。デフォルトは1で、単一ファイルアップロードを意味します。より高い数を定義すると、複数アップロードが可能になります。これを0に設定すると、同時にアップロードできるファイルの数に制限がないことを意味します。

注意:同時にアップロードできるファイルの最大数は、PHPディレクティブmax_file_uploadsでも制限されており、デフォルトは20です。

こちらもご覧ください

public integer $maxFiles 1
$maxSize public プロパティ

アップロードされたファイルに必要な最大バイト数。デフォルトはnullで、制限がないことを意味します。なお、サイズ制限はupload_max_filesizepost_max_sizeのINI設定および「MAX_FILE_SIZE」隠しフィールド値の影響も受けます。詳細については、getSizeLimit()を参照してください。

こちらもご覧ください

public integer|null $maxSize null
$message public プロパティ

ファイルが正しくアップロードされなかった場合に使用されるエラーメッセージ。

public string $message null
$mimeTypes public プロパティ

アップロードが許可されるファイルMIMEタイプのリスト。これは、配列またはスペースまたはカンマで区切られたファイルMIMEタイプで構成される文字列(例:「text/plain、image/png」)のいずれかになります。特殊文字*を使用したマスクを使用して、MIMEタイプのグループを照合できます。たとえば、image/*は、image/で始まるすべてのMIMEタイプ(例:image/jpegimage/png)を渡します。MIMEタイプ名は大文字と小文字を区別しません。デフォルトはnullで、すべてのMIMEタイプが許可されることを意味します。

間違ったMIMEタイプのカスタムメッセージについては、$wrongMimeTypeも参照してください。

public array|string|null $mimeTypes null
$minFiles public プロパティ(バージョン2.0.14から利用可能)

指定された属性が保持できるファイルの最小数。デフォルトは0です。値が高いほど、少なくともその数のファイルをアップロードする必要があります。

アップロードされたファイルが少なすぎる場合のカスタムメッセージについては、$tooFewも参照してください。

public integer $minFiles 0
$minSize public プロパティ

アップロードされたファイルに必要な最小バイト数。デフォルトはnullで、制限がないことを意味します。

小さすぎるファイルのカスタムメッセージについては、$tooSmallも参照してください。

public integer|null $minSize null
$sizeLimit public プロパティ

アップロードされたファイルのサイズ制限。

public integer $sizeLimit null
$tooBig public プロパティ

アップロードされたファイルが大きすぎる場合に使用されるエラーメッセージ。メッセージには、次のトークンを使用できます

  • {attribute}:属性名
  • {file}:アップロードされたファイル名
  • {limit}:許可される最大サイズ(getSizeLimit()を参照)
  • {formattedLimit}:Formatter::asShortSize()でフォーマットされた最大サイズ
public string $tooBig null
$tooFew public プロパティ (バージョン 2.0.14 から利用可能)

複数ファイルのアップロード数が minFiles より少ない場合に使用されるエラーメッセージです。メッセージ内で次のトークンを使用できます。

  • {attribute}:属性名
  • {limit}: $minFiles の値
public string $tooFew null
$tooMany public プロパティ

複数ファイルのアップロード数が制限を超えた場合に使用されるエラーメッセージです。メッセージ内で次のトークンを使用できます。

  • {attribute}:属性名
  • {limit}: $maxFiles の値
public string $tooMany null
$tooSmall public プロパティ

アップロードされたファイルが小さすぎる場合に使用されるエラーメッセージです。メッセージ内で次のトークンを使用できます。

  • {attribute}:属性名
  • {file}:アップロードされたファイル名
  • {limit}: $minSize の値
  • {formattedLimit}: [[\yii\i18n\Formatter::asShortSize()|Formatter::asShortSize()]でフォーマットされた$minSizeの値
public string $tooSmall null
$uploadRequired public プロパティ

ファイルがアップロードされなかった場合に使用されるエラーメッセージです。これはバリデーションエラーメッセージのテキストであることに注意してください。ファイルのアップロードを必須にするには、$skipOnEmptyfalse に設定する必要があります。

public string $uploadRequired null
$wrongExtension public プロパティ

アップロードされたファイルの拡張子が $extensions にリストされていない場合に使用されるエラーメッセージです。メッセージ内で次のトークンを使用できます。

  • {attribute}:属性名
  • {file}:アップロードされたファイル名
  • {extensions}: 許可された拡張子のリスト。
public string $wrongExtension null
$wrongMimeType public プロパティ

ファイルのMIMEタイプが $mimeTypes プロパティで許可されていない場合に使用されるエラーメッセージです。メッセージ内で次のトークンを使用できます。

  • {attribute}:属性名
  • {file}:アップロードされたファイル名
  • {mimeTypes}: $mimeTypes の値
public string $wrongMimeType 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 でないかを確認します。

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

  • セッターによって定義されたプロパティ: プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ: プロパティが設定されているかどうかを返します
  • 存在しないプロパティに対しては 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 メソッド

定義元: 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() に渡してビヘイビアオブジェクトを作成するオブジェクト構成配列。
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()

プロパティを読み取れるかどうかを示す値を返します。

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

  • クラスが、指定された名前に関連付けられたgetterメソッドを持っている場合(この場合、プロパティ名は case-insensitive です)。
  • クラスが、指定された名前のメンバ変数を持っている場合($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 method
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 method

クライアント側検証の実行に必要な 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)
{
    ValidationAsset::register($view);
    $options = $this->getClientOptions($model, $attribute);
    return 'yii.validation.file(attribute, messages, ' . Json::htmlEncode($options) . ');';
}

            
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

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

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 method

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

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

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

public void detachBehaviors ( )

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

            
ensureBehaviors() public method

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

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

定義元: 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 = [];
    if ($this->message !== null) {
        $options['message'] = $this->formatMessage($this->message, [
            'attribute' => $label,
        ]);
    }
    $options['skipOnEmpty'] = $this->skipOnEmpty;
    if (!$this->skipOnEmpty) {
        $options['uploadRequired'] = $this->formatMessage($this->uploadRequired, [
            'attribute' => $label,
        ]);
    }
    if ($this->mimeTypes !== null) {
        $mimeTypes = [];
        foreach ($this->mimeTypes as $mimeType) {
            $mimeTypes[] = new JsExpression(Html::escapeJsRegularExpression($this->buildMimeTypeRegexp($mimeType)));
        }
        $options['mimeTypes'] = $mimeTypes;
        $options['wrongMimeType'] = $this->formatMessage($this->wrongMimeType, [
            'attribute' => $label,
            'mimeTypes' => implode(', ', $this->mimeTypes),
        ]);
    }
    if ($this->extensions !== null) {
        $options['extensions'] = $this->extensions;
        $options['wrongExtension'] = $this->formatMessage($this->wrongExtension, [
            'attribute' => $label,
            'extensions' => implode(', ', $this->extensions),
        ]);
    }
    if ($this->minSize !== null) {
        $options['minSize'] = $this->minSize;
        $options['tooSmall'] = $this->formatMessage($this->tooSmall, [
            'attribute' => $label,
            'limit' => $this->minSize,
            'formattedLimit' => Yii::$app->formatter->asShortSize($this->minSize),
        ]);
    }
    if ($this->maxSize !== null) {
        $options['maxSize'] = $this->maxSize;
        $options['tooBig'] = $this->formatMessage($this->tooBig, [
            'attribute' => $label,
            'limit' => $this->getSizeLimit(),
            'formattedLimit' => Yii::$app->formatter->asShortSize($this->getSizeLimit()),
        ]);
    }
    if ($this->maxFiles !== null) {
        $options['maxFiles'] = $this->maxFiles;
        $options['tooMany'] = $this->formatMessage($this->tooMany, [
            'attribute' => $label,
            'limit' => $this->maxFiles,
        ]);
    }
    return $options;
}

            
getMimeTypeByFile() protected メソッド (バージョン 2.0.26 から利用可能)

ファイルパスからMIMEタイプを取得します

protected string|null getMimeTypeByFile ( $filePath )
$filePath string
throws yii\base\InvalidConfigException

                protected function getMimeTypeByFile($filePath)
{
    return FileHelper::getMimeType($filePath);
}

            
getSizeLimit() public メソッド

アップロードされたファイルに許可される最大サイズを返します。

これは4つの要素に基づいて決定されます。

  • php.ini の 'upload_max_filesize'
  • php.ini の 'post_max_size'
  • 'MAX_FILE_SIZE' 隠しフィールド
  • $maxSize
public integer getSizeLimit ( )
return integer

アップロードされたファイルのサイズ制限。

                public function getSizeLimit()
{
    // Get the lowest between post_max_size and upload_max_filesize, log a warning if the first is < than the latter
    $limit = $this->sizeToBytes(ini_get('upload_max_filesize'));
    $postLimit = $this->sizeToBytes(ini_get('post_max_size'));
    if ($postLimit > 0 && $postLimit < $limit) {
        Yii::warning('PHP.ini\'s \'post_max_size\' is less than \'upload_max_filesize\'.', __METHOD__);
        $limit = $postLimit;
    }
    if ($this->maxSize !== null && $limit > 0 && $this->maxSize < $limit) {
        $limit = $this->maxSize;
    }
    if (isset($_POST['MAX_FILE_SIZE']) && $_POST['MAX_FILE_SIZE'] > 0 && $_POST['MAX_FILE_SIZE'] < $limit) {
        $limit = (int) $_POST['MAX_FILE_SIZE'];
    }
    return $limit;
}

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

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

プロパティが定義されている条件は次のとおりです。

  • クラスが指定された名前に関連付けられたゲッターまたはセッターメソッドを持っている場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスが、指定された名前のメンバ変数を持っている場合($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 = Yii::t('yii', 'File upload failed.');
    }
    if ($this->uploadRequired === null) {
        $this->uploadRequired = Yii::t('yii', 'Please upload a file.');
    }
    if ($this->tooMany === null) {
        $this->tooMany = Yii::t('yii', 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.');
    }
    if ($this->tooFew === null) {
        $this->tooFew = Yii::t('yii', 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.');
    }
    if ($this->wrongExtension === null) {
        $this->wrongExtension = Yii::t('yii', 'Only files with these extensions are allowed: {extensions}.');
    }
    if ($this->tooBig === null) {
        $this->tooBig = Yii::t('yii', 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.');
    }
    if ($this->tooSmall === null) {
        $this->tooSmall = Yii::t('yii', 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.');
    }
    if (!is_array($this->extensions)) {
        $this->extensions = preg_split('/[\s,]+/', strtolower((string)$this->extensions), -1, PREG_SPLIT_NO_EMPTY);
    } else {
        $this->extensions = array_map('strtolower', $this->extensions);
    }
    if ($this->wrongMimeType === null) {
        $this->wrongMimeType = Yii::t('yii', 'Only files with these MIME types are allowed: {mimeTypes}.');
    }
    if (!is_array($this->mimeTypes)) {
        $this->mimeTypes = preg_split('/[\s,]+/', strtolower((string)$this->mimeTypes), -1, PREG_SPLIT_NO_EMPTY);
    } else {
        $this->mimeTypes = array_map('strtolower', $this->mimeTypes);
    }
}

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

指定された値が空かどうかをチェックします。

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

public boolean isEmpty ( $value, $trim false )
$value mixed

チェックする値

$trim boolean
return boolean

値が空かどうか

                public function isEmpty($value, $trim = false)
{
    $value = is_array($value) ? reset($value) : $value;
    return !($value instanceof UploadedFile) || $value->error == UPLOAD_ERR_NO_FILE;
}

            
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() パブリックメソッド

定義元: 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() パブリックメソッド

定義元: 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() パブリックメソッド

定義元: 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 void validateAttribute ( $model, $attribute )
$model yii\base\Model

検証されるデータモデル

$attribute string

検証する属性の名前。

                public function validateAttribute($model, $attribute)
{
    if ($this->maxFiles != 1 || $this->minFiles > 1) {
        $rawFiles = $model->$attribute;
        if (!is_array($rawFiles)) {
            $this->addError($model, $attribute, $this->uploadRequired);
            return;
        }
        $files = $this->filterFiles($rawFiles);
        $model->$attribute = $files;
        if (empty($files)) {
            $this->addError($model, $attribute, $this->uploadRequired);
            return;
        }
        $filesCount = count($files);
        if ($this->maxFiles && $filesCount > $this->maxFiles) {
            $this->addError($model, $attribute, $this->tooMany, ['limit' => $this->maxFiles]);
        }
        if ($this->minFiles && $this->minFiles > $filesCount) {
            $this->addError($model, $attribute, $this->tooFew, ['limit' => $this->minFiles]);
        }
        foreach ($files as $file) {
            $result = $this->validateValue($file);
            if (!empty($result)) {
                $this->addError($model, $attribute, $result[0], $result[1]);
            }
        }
    } else {
        $result = $this->validateValue($model->$attribute);
        if (!empty($result)) {
            $this->addError($model, $attribute, $result[0], $result[1]);
        }
    }
}

            
validateAttributes() パブリックメソッド

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

            
validateExtension() 保護されたメソッド

アップロードされたファイルが、現在のバリデーター設定に従って正しいタイプ(拡張子)を持っているかどうかを確認します。

protected boolean validateExtension ( $file )
$file yii\web\UploadedFile

                protected function validateExtension($file)
{
    $extension = mb_strtolower($file->extension, 'UTF-8');
    if ($this->checkExtensionByMimeType) {
        $mimeType = FileHelper::getMimeType($file->tempName, null, false);
        if ($mimeType === null) {
            return false;
        }
        $extensionsByMimeType = FileHelper::getExtensionsByMimeType($mimeType);
        if (!in_array($extension, $extensionsByMimeType, true)) {
            return false;
        }
    }
    if (!empty($this->extensions)) {
        foreach ((array) $this->extensions as $ext) {
            if ($extension === $ext || StringHelper::endsWith($file->name, ".$ext", false)) {
                return true;
            }
        }
        return false;
    }
    return true;
}

            
validateMimeType() 保護されたメソッド (バージョン 2.0.8 以降)

$mimeTypesプロパティのリストに対して、$fileのMIMEタイプをチェックします。

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

protected boolean validateMimeType ( $file )
$file yii\web\UploadedFile
return boolean

$file の MIME タイプが許可されているかどうか

throws yii\base\InvalidConfigException

                protected function validateMimeType($file)
{
    $fileMimeType = $this->getMimeTypeByFile($file->tempName);
    if ($fileMimeType === null) {
        return false;
    }
    foreach ($this->mimeTypes as $mimeType) {
        if (strcasecmp($mimeType, $fileMimeType) === 0) {
            return true;
        }
        if (strpos($mimeType, '*') !== false && preg_match($this->buildMimeTypeRegexp($mimeType), $fileMimeType)) {
            return true;
        }
    }
    return false;
}

            
validateValue() 保護されたメソッド

値を検証します。

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

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 (!$value instanceof UploadedFile || $value->error == UPLOAD_ERR_NO_FILE) {
        return [$this->uploadRequired, []];
    }
    switch ($value->error) {
        case UPLOAD_ERR_OK:
            if ($this->maxSize !== null && $value->size > $this->getSizeLimit()) {
                return [
                    $this->tooBig,
                    [
                        'file' => $value->name,
                        'limit' => $this->getSizeLimit(),
                        'formattedLimit' => Yii::$app->formatter->asShortSize($this->getSizeLimit()),
                    ],
                ];
            } elseif ($this->minSize !== null && $value->size < $this->minSize) {
                return [
                    $this->tooSmall,
                    [
                        'file' => $value->name,
                        'limit' => $this->minSize,
                        'formattedLimit' => Yii::$app->formatter->asShortSize($this->minSize),
                    ],
                ];
            } elseif (!empty($this->extensions) && !$this->validateExtension($value)) {
                return [$this->wrongExtension, ['file' => $value->name, 'extensions' => implode(', ', $this->extensions)]];
            } elseif (!empty($this->mimeTypes) && !$this->validateMimeType($value)) {
                return [$this->wrongMimeType, ['file' => $value->name, 'mimeTypes' => implode(', ', $this->mimeTypes)]];
            }
            return null;
        case UPLOAD_ERR_INI_SIZE:
        case UPLOAD_ERR_FORM_SIZE:
            return [$this->tooBig, [
                'file' => $value->name,
                'limit' => $this->getSizeLimit(),
                'formattedLimit' => Yii::$app->formatter->asShortSize($this->getSizeLimit()),
            ]];
        case UPLOAD_ERR_PARTIAL:
            Yii::warning('File was only partially uploaded: ' . $value->name, __METHOD__);
            break;
        case UPLOAD_ERR_NO_TMP_DIR:
            Yii::warning('Missing the temporary folder to store the uploaded file: ' . $value->name, __METHOD__);
            break;
        case UPLOAD_ERR_CANT_WRITE:
            Yii::warning('Failed to write the uploaded file to disk: ' . $value->name, __METHOD__);
            break;
        case UPLOAD_ERR_EXTENSION:
            Yii::warning('File upload was stopped by some PHP extension: ' . $value->name, __METHOD__);
            break;
        default:
            break;
    }
    return [$this->message, []];
}