4 フォロワー

クラス yii\base\Model

継承yii\base\Model » yii\base\Component » yii\base\BaseObject
実装ArrayAccess, IteratorAggregate, yii\base\Arrayable, yii\base\Configurable, yii\base\StaticInstanceInterface
使用するトレイトyii\base\ArrayableTrait, yii\base\StaticInstanceTrait
サブクラスyii\base\DynamicModel, yii\data\ActiveDataFilter, yii\data\DataFilter, yii\db\ActiveRecord, yii\db\BaseActiveRecord
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/base/Model.php

Modelは、データモデルの基本クラスです。

Modelは以下の一般的に使用される機能を実装します。

  • 属性宣言: デフォルトでは、すべてのpublicなクラスメンバはモデル属性とみなされます。
  • 属性ラベル: 各属性は、表示目的のためにラベルと関連付けることができます。
  • 大量属性の割り当て
  • シナリオベースのバリデーション

Modelは、データバリデーションの実行時に以下のイベントも発生させます。

Modelを直接使用してモデルデータを格納したり、カスタマイズして拡張したりできます。

Modelの詳細と使用方法については、モデルに関するガイド記事を参照してください。

公開プロパティ

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

プロパティ 説明 定義元
$activeValidators yii\validators\Validator[] 現在の$scenarioに適用可能なバリデータ。 yii\base\Model
$attributes array 属性値 (名前 => 値)。 yii\base\Model
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$errors array すべての属性または指定された属性のエラー。 yii\base\Model
$firstErrors array 最初のエラー。 yii\base\Model
$iterator ArrayIterator リスト内のアイテムをトラバースするためのイテレータ。 yii\base\Model
$scenario string このモデルが存在するシナリオ。 yii\base\Model
$validators ArrayObject|yii\validators\Validator[] モデルで宣言されているすべてのバリデータ。 yii\base\Model

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。 yii\base\Model
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているかどうか、つまり定義されていてnullでないかどうかを確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
activeAttributes() 現在のシナリオでバリデーションの対象となる属性名を返します。 yii\base\Model
addError() 指定された属性に新しいエラーを追加します。 yii\base\Model
addErrors() エラーのリストを追加します。 yii\base\Model
afterValidate() このメソッドは、バリデーションが終了した後に呼び出されます。 yii\base\Model
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
attributeHints() 属性ヒントを返します。 yii\base\Model
attributeLabels() 属性ラベルを返します。 yii\base\Model
attributes() 属性名のリストを返します。 yii\base\Model
beforeValidate() このメソッドは、バリデーションが開始する前に呼び出されます。 yii\base\Model
behaviors() このコンポーネントが動作するビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
clearErrors() すべての属性または単一の属性のエラーを削除します。 yii\base\Model
createValidators() rules()で指定された検証ルールに基づいて、バリデータオブジェクトを作成します。 yii\base\Model
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
extraFields() toArray()によってさらに展開され、返されることができるフィールドのリストを返します。 yii\base\ArrayableTrait
fields() 特定のフィールドが指定されていない場合、toArray()によってデフォルトで返されるべきフィールドのリストを返します。 yii\base\Model
formName() このモデルクラスが使用するべきフォーム名を返します。 yii\base\Model
generateAttributeLabel() 指定された属性名に基づいて、ユーザーフレンドリーな属性ラベルを生成します。 yii\base\Model
getActiveValidators() 現在の$scenarioに適用可能なバリデータを返します。 yii\base\Model
getAttributeHint() 指定された属性のテキストヒントを返します。 yii\base\Model
getAttributeLabel() 指定された属性のテキストラベルを返します。 yii\base\Model
getAttributes() 属性値を返します。 yii\base\Model
getBehavior() 名前付きのビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getErrorSummary() すべての属性のエラーを一次元配列として返します。 yii\base\Model
getErrors() すべての属性または単一属性のエラーを返します。 yii\base\Model
getFirstError() 指定された属性の最初のエラーを返します。 yii\base\Model
getFirstErrors() モデル内のすべての属性の最初のエラーを返します。 yii\base\Model
getIterator() モデル内の属性をトラバースするためのイテレータを返します。 yii\base\Model
getScenario() このモデルが使用されているシナリオを返します。 yii\base\Model
getValidators() rules()で宣言されているすべてのバリデータ を返します。 yii\base\Model
hasErrors() バリデーションエラーが存在するかどうかを示す値を返します。 yii\base\Model
hasEventHandlers() 名前付きイベントにハンドラがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\base\BaseObject
instance() メタ情報を取得するために使用できる、静的クラスインスタンスを返します。 yii\base\StaticInstanceTrait
isAttributeActive() 現在のシナリオで属性がアクティブかどうかを示す値を返します。 yii\base\Model
isAttributeRequired() 属性が必須かどうかを示す値を返します。 yii\base\Model
isAttributeSafe() 属性が大量代入に対して安全かどうかを示す値を返します。 yii\base\Model
load() 入力データでモデルを設定します。 yii\base\Model
loadMultiple() エンドユーザーからのデータを使用して、一連のモデルを設定します。 yii\base\Model
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
offsetExists() 指定されたオフセットに要素が存在するかどうかを返します。 yii\base\Model
offsetGet() 指定されたオフセットの要素を返します。 yii\base\Model
offsetSet() 指定されたオフセットに要素を設定します。 yii\base\Model
offsetUnset() 指定されたオフセットの要素値をnullに設定します。 yii\base\Model
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
onUnsafeAttribute() 安全でない属性が大量に代入されている場合に呼び出されるメソッドです。 yii\base\Model
rules() 属性のバリデーションルールを返します。 yii\base\Model
safeAttributes() 現在のシナリオで大量代入に対して安全な属性名を返します。 yii\base\Model
scenarios() シナリオと対応するアクティブな属性のリストを返します。 yii\base\Model
setAttributes() 大量に属性値を設定します。 yii\base\Model
setScenario() モデルのシナリオを設定します。 yii\base\Model
toArray() モデルを配列に変換します。 yii\base\ArrayableTrait
trigger() イベントをトリガーします。 yii\base\Component
validate() データのバリデーションを実行します。 yii\base\Model
validateMultiple() 複数のモデルをバリデートします。 yii\base\Model

保護されたメソッド

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

メソッド 説明 定義元
extractFieldsFor() 指定されたルートフィールドに対して、フィールドコレクションからネストされたフィールドを抽出します。ネストされたフィールドはドット(.)で区切られます。例:「item.id」この例では「id」が抽出されます。 yii\base\ArrayableTrait
extractRootFields() ネストされたフィールドからルートフィールド名を抽出します。 yii\base\ArrayableTrait
resolveFields() toArray()で返されるフィールドを決定します。 yii\base\ArrayableTrait

イベント

継承されたイベントを非表示

イベント 説明 定義元
EVENT_AFTER_VALIDATE yii\base\Event validate()の最後に発生するイベント yii\base\Model
EVENT_BEFORE_VALIDATE yii\base\ModelEvent validate()の開始時に発生するイベント。 yii\base\Model

定数

継承された定数を非表示

定数 説明 定義元
SCENARIO_DEFAULT 'default' デフォルトのシナリオの名前。 yii\base\Model

プロパティの詳細

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

$activeValidators public property

現在の$scenarioに適用可能なバリデータ。

$attributes public property

属性値 (名前 => 値)。

public array $attributes null
$errors public property

すべての属性または指定された属性のエラー。エラーがない場合は空の配列が返されます。getErrors()を参照して詳細な説明を確認してください。すべての属性のエラーを返す場合、結果は次のような二次元配列になります: `php [ 'username' => [ 'Username is required.', 'Username must contain only word characters.', ], 'email' => [ 'Email address is invalid.', ] ] `

public array $errors null
$firstErrors public property

最初のエラー。配列のキーは属性名、配列の値は対応するエラーメッセージです。エラーがない場合は空の配列が返されます。

public array $firstErrors null
$iterator public read-only property

リスト内のアイテムをトラバースするためのイテレータ。

$scenario public property

このモデルが存在するシナリオです。SCENARIO_DEFAULTがデフォルトです。

public string $scenario null
$validators public property

モデルで宣言されているすべてのバリデータ。

メソッドの詳細

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

__call() public method

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

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

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

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

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

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 yii\base\UnknownMethodException

未知のメソッド呼び出し時

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

            
__clone() publicメソッド

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

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

public void __clone ( )

                public function __clone()
{
    parent::__clone();
    $this->_errors = null;
    $this->_validators = null;
}

            
__construct() publicメソッド

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

コンストラクタ。

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

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

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

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

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

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

            
__get() publicメソッド

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

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

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

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

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

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

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

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

例外 yii\base\UnknownPropertyException

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

例外 yii\base\InvalidCallException

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

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

            
__isset() publicメソッド

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

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

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

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

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

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

public boolean __isset ( $name )
$name string

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

戻り値 boolean

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

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

            
__set() publicメソッド

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

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

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

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

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

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

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

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

$value mixed

プロパティ値

例外 yii\base\UnknownPropertyException

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

例外 yii\base\InvalidCallException

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

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

            
__unset() publicメソッド

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

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

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

  • セッターによって定義されたプロパティ: プロパティの値をnullに設定します。
  • ビヘイビアのプロパティ: プロパティの値をnullに設定します。

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

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

public void __unset ( $name )
$name string

プロパティ名

例外 yii\base\InvalidCallException

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

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

            
activeAttributes() publicメソッド

現在のシナリオでバリデーションの対象となる属性名を返します。

public string[] activeAttributes ( )
戻り値 string[]

安全な属性名

                public function activeAttributes()
{
    $scenario = $this->getScenario();
    $scenarios = $this->scenarios();
    if (!isset($scenarios[$scenario])) {
        return [];
    }
    $attributes = array_keys(array_flip($scenarios[$scenario]));
    foreach ($attributes as $i => $attribute) {
        if (strncmp($attribute, '!', 1) === 0) {
            $attributes[$i] = substr($attribute, 1);
        }
    }
    return $attributes;
}

            
addError() publicメソッド

指定された属性に新しいエラーを追加します。

public void addError ( $attribute, $error '' )
$attribute string

属性名

$error string

新しいエラーメッセージ

                public function addError($attribute, $error = '')
{
    $this->_errors[$attribute][] = $error;
}

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

エラーのリストを追加します。

public void addErrors ( array $items )
$items array

エラーのリストです。配列のキーは属性名でなければなりません。配列の値はエラーメッセージである必要があります。属性に複数のエラーがある場合、これらのエラーは配列で指定する必要があります。getErrors()の結果をこのパラメータの値として使用できます。

                public function addErrors(array $items)
{
    foreach ($items as $attribute => $errors) {
        if (is_array($errors)) {
            foreach ($errors as $error) {
                $this->addError($attribute, $error);
            }
        } else {
            $this->addError($attribute, $errors);
        }
    }
}

            
afterValidate() publicメソッド

このメソッドは、バリデーションが終了した後に呼び出されます。

デフォルトの実装では、afterValidateイベントが発生します。検証後の後処理を行うために、このメソッドをオーバーライドできます。イベントが発生するように、親の実装が呼び出されるようにしてください。

public void afterValidate ( )

                public function afterValidate()
{
    $this->trigger(self::EVENT_AFTER_VALIDATE);
}

            
attachBehavior() publicメソッド

定義済み: yii\base\Component::attachBehavior()

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

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

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

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

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

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

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

ビヘイビアオブジェクト

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

            
attachBehaviors() publicメソッド

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

            
attributeHints() publicメソッド (バージョン2.0.4以降で使用可能)

属性ヒントを返します。

属性ヒントは主に表示目的で使用されます。例えば、属性isPublicに対して、ヒントログインしていないユーザーに対して投稿を表示するかどうかを宣言できます。これは、属性の意味に関するユーザーフレンドリーな説明を提供し、エンドユーザーに表示できます。

ラベルとは異なり、明示的な宣言が省略されている場合、ヒントは生成されません。

親クラスで定義されたヒントを継承するには、子クラスはarray_merge()などの関数を使用して親のヒントと子のヒントをマージする必要があります。

public array attributeHints ( )
戻り値 array

属性ヒント (name => hint)

                public function attributeHints()
{
    return [];
}

            
attributeLabels() publicメソッド

属性ラベルを返します。

属性ラベルは主に表示目的で使用されます。例えば、属性firstNameに対して、よりユーザーフレンドリーでエンドユーザーに表示できるラベルFirst Nameを宣言できます。

デフォルトでは、属性ラベルはgenerateAttributeLabel()を使用して生成されます。このメソッドを使用すると、属性ラベルを明示的に指定できます。

親クラスで定義されたラベルを継承するには、子クラスはarray_merge()などの関数を使用して親のラベルと子のラベルをマージする必要があります。

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

public array attributeLabels ( )
戻り値 array

属性ラベル (name => label)

                public function attributeLabels()
{
    return [];
}

            
attributes() publicメソッド

属性名のリストを返します。

デフォルトでは、このメソッドはクラスのパブリックな非静的プロパティをすべて返します。デフォルトの動作を変更するために、このメソッドをオーバーライドできます。

public string[] attributes ( )
戻り値 string[]

属性名のリスト。

                public function attributes()
{
    $class = new ReflectionClass($this);
    $names = [];
    foreach ($class->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
        if (!$property->isStatic()) {
            $names[] = $property->getName();
        }
    }
    return $names;
}

            
beforeValidate() publicメソッド

このメソッドは、バリデーションが開始する前に呼び出されます。

デフォルトの実装では、beforeValidateイベントが発生します。検証前の予備チェックを行うために、このメソッドをオーバーライドできます。イベントが発生するように、親の実装が呼び出されるようにしてください。

public boolean beforeValidate ( )
戻り値 boolean

検証を実行するかどうか。デフォルトはtrueです。falseが返された場合、検証は停止し、モデルは無効と見なされます。

                public function beforeValidate()
{
    $event = new ModelEvent();
    $this->trigger(self::EVENT_BEFORE_VALIDATE, $event);
    return $event->isValid;
}

            
behaviors() publicメソッド

定義済み: yii\base\Component::behaviors()

このコンポーネントが動作するビヘイビアのリストを返します。

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

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

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

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

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

public array behaviors ( )
戻り値 array

ビヘイビアの設定。

                public function behaviors()
{
    return [];
}

            
canGetProperty() publicメソッド

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

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

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

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

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

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

            
canSetProperty() publicメソッド

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

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

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

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

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

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

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

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

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

public static string className ( )
戻り値 string

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

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

            
clearErrors() publicメソッド

すべての属性または単一の属性のエラーを削除します。

public void clearErrors ( $attribute null )
$attribute string|null

属性名。すべての属性のエラーを削除するにはnullを使用します。

                public function clearErrors($attribute = null)
{
    if ($attribute === null) {
        $this->_errors = [];
    } else {
        unset($this->_errors[$attribute]);
    }
}

            
createValidators() publicメソッド

rules()で指定された検証ルールに基づいて、バリデータオブジェクトを作成します。

getValidators()とは異なり、このメソッドが呼び出されるたびに、新しいバリデータのリストが返されます。

public ArrayObject createValidators ( )
戻り値 ArrayObject

バリデータ

例外 yii\base\InvalidConfigException

バリデーションルールの設定が無効な場合

                public function createValidators()
{
    $validators = new ArrayObject();
    foreach ($this->rules() as $rule) {
        if ($rule instanceof Validator) {
            $validators->append($rule);
        } elseif (is_array($rule) && isset($rule[0], $rule[1])) { // attributes, validator type
            $validator = Validator::createValidator($rule[1], $this, (array) $rule[0], array_slice($rule, 2));
            $validators->append($validator);
        } else {
            throw new InvalidConfigException('Invalid validation rule: a rule must specify both attribute names and validator type.');
        }
    }
    return $validators;
}

            
detachBehavior() publicメソッド

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

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

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

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

ビヘイビアの名前。

戻り値 yii\base\Behavior|null

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

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

            
detachBehaviors() publicメソッド

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

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

public void detachBehaviors ( )

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

            
ensureBehaviors() publicメソッド

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

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

public void ensureBehaviors ( )

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

            
extraFields() publicメソッド

定義されている場所: yii\base\ArrayableTrait::extraFields()

toArray()によってさらに展開され、返されることができるフィールドのリストを返します。

このメソッドはfields()に似ていますが、このメソッドによって返されるフィールドのリストは、toArray()によってデフォルトでは返されません。toArray()を呼び出す際に展開するフィールド名を明示的に指定した場合にのみ、その値がエクスポートされます。

デフォルトの実装では空の配列を返します。

コンテキスト情報(例:現在のアプリケーションユーザー)に基づいて展開可能なフィールドのリストを返すように、このメソッドをオーバーライドできます。

こちらも参照してください

public array extraFields ( )
戻り値 array

展開可能なフィールド名またはフィールド定義のリスト。fields()を参照して返値の形式を確認してください。

                public function extraFields()
{
    return [];
}

            
extractFieldsFor() protectedメソッド (バージョン2.0.14以降で使用可能)

定義されている場所: yii\base\ArrayableTrait::extractFieldsFor()

指定されたルートフィールドに対して、フィールドコレクションからネストされたフィールドを抽出します。ネストされたフィールドはドット(.)で区切られます。例:「item.id」この例では「id」が抽出されます。

protected array extractFieldsFor ( array $fields, $rootField )
$fields array

抽出を要求されたフィールド

$rootField string

ネストされたフィールドを抽出したいルートフィールド

戻り値 array

指定されたフィールドに対して抽出されたネストされたフィールド

                protected function extractFieldsFor(array $fields, $rootField)
{
    $result = [];
    foreach ($fields as $field) {
        if (0 === strpos($field, "{$rootField}.")) {
            $result[] = preg_replace('/^' . preg_quote($rootField, '/') . '\./i', '', $field);
        }
    }
    return array_unique($result);
}

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

定義位置: yii\base\ArrayableTrait::extractRootFields()

ネストされたフィールドからルートフィールド名を抽出します。

ネストされたフィールドはドット(.)で区切られます。例: "item.id" 上記の例では"item"が抽出されます。

protected array extractRootFields ( array $fields )
$fields array

抽出を要求されたフィールド

戻り値 array

与えられたネストされたフィールドから抽出されたルートフィールド

                protected function extractRootFields(array $fields)
{
    $result = [];
    foreach ($fields as $field) {
        $result[] = current(explode('.', $field, 2));
    }
    if (in_array('*', $result, true)) {
        $result = [];
    }
    return array_unique($result);
}

            
fields() public メソッド

特定のフィールドが指定されていない場合、toArray()によってデフォルトで返されるべきフィールドのリストを返します。

toArray()によって返される配列内の名前付き要素がフィールドです。

このメソッドは、フィールド名またはフィールド定義の配列を返す必要があります。前者の場合、フィールド名はオブジェクトのプロパティ名として扱われ、その値がフィールド値として使用されます。後者の場合、配列のキーはフィールド名で、配列の値は対応するフィールド定義になります。フィールド定義は、オブジェクトのプロパティ名、または対応するフィールド値を返すPHPのコールバック関数です。コールバック関数のシグネチャは次のようになります。

function ($model, $field) {
    // return field value
}

例えば、以下のコードは4つのフィールドを宣言します。

  • email: フィールド名はプロパティ名emailと同じです。
  • firstNamelastName: フィールド名はfirstNamelastNameで、値はfirst_namelast_nameプロパティから取得されます。
  • fullName: フィールド名はfullNameです。その値はfirst_namelast_nameを連結して取得されます。
return [
    'email',
    'firstName' => 'first_name',
    'lastName' => 'last_name',
    'fullName' => function ($model) {
        return $model->first_name . ' ' . $model->last_name;
    },
];

このメソッドでは、コンテキスト情報に基づいて異なるフィールドリストを返すこともできます。例えば、$scenarioや現在のアプリケーションユーザーの権限に応じて、表示可能なフィールドのセットを変更したり、いくつかのフィールドを除外したりできます。

このメソッドのデフォルトの実装は、同じ属性名でインデックスされたattributes()を返します。

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

public array fields ( )
戻り値 array

フィールド名またはフィールド定義のリスト。

                public function fields()
{
    $fields = $this->attributes();
    return array_combine($fields, $fields);
}

            
formName() public メソッド

このモデルクラスが使用するべきフォーム名を返します。

フォーム名は主にyii\widgets\ActiveFormによって、モデル内の属性の入力フィールドの名前付け方法を決定するために使用されます。フォーム名が"A"で属性名が"b"の場合、対応する入力名は"A[b]"になります。フォーム名が空文字列の場合、入力名は"b"になります。

上記の命名スキームの目的は、複数の異なるモデルを含むフォームの場合、各モデルの属性がPOSTデータのサブ配列にグループ化され、それらを区別しやすくなることです。

デフォルトでは、このメソッドはモデルクラス名(名前空間部分を除く)をフォーム名として返します。モデルが異なるフォームで使用される場合、これをオーバーライドできます。

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

public string formName ( )
戻り値 string

このモデルクラスのフォーム名。

例外 yii\base\InvalidConfigException

フォームが匿名クラスで定義され、formName()メソッドがオーバーライドされていない場合。

                public function formName()
{
    $reflector = new ReflectionClass($this);
    if (PHP_VERSION_ID >= 70000 && $reflector->isAnonymous()) {
        throw new InvalidConfigException('The "formName()" method should be explicitly defined for anonymous models');
    }
    return $reflector->getShortName();
}

            
generateAttributeLabel() public メソッド

指定された属性名に基づいて、ユーザーフレンドリーな属性ラベルを生成します。

これは、アンダースコア、ダッシュ、ドットを空白に置き換え、各単語の先頭を大文字にすることで行われます。例えば、「department_name」または「DepartmentName」は「Department Name」を生成します。

public string generateAttributeLabel ( $name )
$name string

カラム名

戻り値 string

属性ラベル

                public function generateAttributeLabel($name)
{
    return Inflector::camel2words($name, true);
}

            
getActiveValidators() public メソッド

現在の$scenarioに適用可能なバリデータを返します。

public yii\validators\Validator[] getActiveValidators ( $attribute null )
$attribute string|null

適用可能なバリデータが返される属性の名前。これがnullの場合、モデルのすべての属性のバリデータが返されます。

戻り値 yii\validators\Validator[]

現在の$scenarioに適用可能なバリデータ。

                public function getActiveValidators($attribute = null)
{
    $activeAttributes = $this->activeAttributes();
    if ($attribute !== null && !in_array($attribute, $activeAttributes, true)) {
        return [];
    }
    $scenario = $this->getScenario();
    $validators = [];
    foreach ($this->getValidators() as $validator) {
        if ($attribute === null) {
            $validatorAttributes = $validator->getValidationAttributes($activeAttributes);
            $attributeValid = !empty($validatorAttributes);
        } else {
            $attributeValid = in_array($attribute, $validator->getValidationAttributes($attribute), true);
        }
        if ($attributeValid && $validator->isActive($scenario)) {
            $validators[] = $validator;
        }
    }
    return $validators;
}

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

指定された属性のテキストヒントを返します。

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

public string getAttributeHint ( $attribute )
$attribute string

属性名

戻り値 string

属性ヒント

                public function getAttributeHint($attribute)
{
    $hints = $this->attributeHints();
    return isset($hints[$attribute]) ? $hints[$attribute] : '';
}

            
getAttributeLabel() public メソッド

指定された属性のテキストラベルを返します。

こちらも参照してください

public string getAttributeLabel ( $attribute )
$attribute string

属性名

戻り値 string

属性ラベル

                public function getAttributeLabel($attribute)
{
    $labels = $this->attributeLabels();
    return isset($labels[$attribute]) ? $labels[$attribute] : $this->generateAttributeLabel($attribute);
}

            
getAttributes() public メソッド

属性値を返します。

public array getAttributes ( $names null, $except = [] )
$names array|null

値を返す必要がある属性のリスト。デフォルトはnullで、attributes()にリストされているすべての属性が返されます。配列の場合、配列内の属性のみが返されます。

$except array

値を返すべきではない属性のリスト。

戻り値 array

属性値 (名前 => 値)。

                public function getAttributes($names = null, $except = [])
{
    $values = [];
    if ($names === null) {
        $names = $this->attributes();
    }
    foreach ($names as $name) {
        $values[$name] = $this->$name;
    }
    foreach ($except as $name) {
        unset($values[$name]);
    }
    return $values;
}

            
getBehavior() public メソッド

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

名前付きのビヘイビアオブジェクトを返します。

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

ビヘイビア名

戻り値 yii\base\Behavior|null

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

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

            
getBehaviors() public メソッド

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

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

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

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

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

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

すべての属性のエラーを一次元配列として返します。

こちらも参照してください

public array getErrorSummary ( $showAllErrors )
$showAllErrors boolean

ブール値。true に設定すると、各属性のすべてのエラーメッセージが表示されます。それ以外の場合は、各属性の最初のエラーメッセージのみが表示されます。

戻り値 array

すべての属性のエラーを一次元配列として返します。エラーがない場合は空の配列が返されます。

                public function getErrorSummary($showAllErrors)
{
    $lines = [];
    $errors = $showAllErrors ? $this->getErrors() : $this->getFirstErrors();
    foreach ($errors as $es) {
        $lines = array_merge($lines, (array)$es);
    }
    return $lines;
}

            
getErrors() public メソッド

すべての属性または単一属性のエラーを返します。

こちらも参照してください

public array getErrors ( $attribute null )
$attribute string|null

属性名。すべての属性のエラーを取得するにはnullを使用します。

戻り値 array

すべての属性、または指定された属性のエラーを返します。エラーがない場合は空の配列が返されます。getErrors() を参照して詳細な説明を確認してください。すべての属性のエラーを返す場合、結果は次のようない二次元配列になります。

[
    'username' => [
        'Username is required.',
        'Username must contain only word characters.',
    ],
    'email' => [
        'Email address is invalid.',
    ]
]

                public function getErrors($attribute = null)
{
    if ($attribute === null) {
        return $this->_errors === null ? [] : $this->_errors;
    }
    return isset($this->_errors[$attribute]) ? $this->_errors[$attribute] : [];
}

            
getFirstError() public メソッド

指定された属性の最初のエラーを返します。

こちらも参照してください

public string|null getFirstError ( $attribute )
$attribute string

属性名。

戻り値 string|null

エラーメッセージ。エラーがない場合はnullが返されます。

                public function getFirstError($attribute)
{
    return isset($this->_errors[$attribute]) ? reset($this->_errors[$attribute]) : null;
}

            
getFirstErrors() public メソッド

モデル内のすべての属性の最初のエラーを返します。

こちらも参照してください

public array getFirstErrors ( )
戻り値 array

最初のエラー。配列のキーは属性名、配列の値は対応するエラーメッセージです。エラーがない場合は空の配列が返されます。

                public function getFirstErrors()
{
    if (empty($this->_errors)) {
        return [];
    }
    $errors = [];
    foreach ($this->_errors as $name => $es) {
        if (!empty($es)) {
            $errors[$name] = reset($es);
        }
    }
    return $errors;
}

            
getIterator() public メソッド

モデル内の属性をトラバースするためのイテレータを返します。

このメソッドは、IteratorAggregate インターフェースで必須です。

public ArrayIterator getIterator ( )
戻り値 ArrayIterator

リスト内のアイテムをトラバースするためのイテレータ。

                #[\ReturnTypeWillChange]
public function getIterator()
{
    $attributes = $this->getAttributes();
    return new ArrayIterator($attributes);
}

            
getScenario() public メソッド

このモデルが使用されているシナリオを返します。

シナリオは、バリデーションの実行方法と、大量に割り当てることができる属性に影響します。

public string getScenario ( )
戻り値 string

このモデルが存在するシナリオです。SCENARIO_DEFAULTがデフォルトです。

                public function getScenario()
{
    return $this->_scenario;
}

            
getValidators() public メソッド

rules()で宣言されているすべてのバリデータ を返します。

このメソッドは、後者が現在の$scenarioに適用可能なバリデーターのみを返すという点でgetActiveValidators()とは異なります。

このメソッドはArrayObjectオブジェクトを返すため、バリデーターの挿入や削除によって操作できます(モデルのビヘイビアで役立ちます)。例:

$model->validators[] = $newValidator;
public ArrayObject|yii\validators\Validator[] getValidators ( )
戻り値 ArrayObject|yii\validators\Validator[]

モデルで宣言されているすべてのバリデータ。

                public function getValidators()
{
    if ($this->_validators === null) {
        $this->_validators = $this->createValidators();
    }
    return $this->_validators;
}

            
hasErrors() public メソッド

バリデーションエラーが存在するかどうかを示す値を返します。

public boolean hasErrors ( $attribute null )
$attribute string|null

属性名。すべての属性をチェックするにはnullを使用します。

戻り値 boolean

エラーがあるかどうか。

                public function hasErrors($attribute = null)
{
    return $attribute === null ? !empty($this->_errors) : isset($this->_errors[$attribute]);
}

            
hasEventHandlers() public メソッド

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

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

public boolean hasEventHandlers ( $name )
$name string

イベント名

戻り値 boolean

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

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

            
hasMethod() public メソッド

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

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

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

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

プロパティ名

$checkBehaviors boolean

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

戻り値 boolean

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

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

            
hasProperty() public メソッド

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

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

プロパティは、以下の場合に定義されています。

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

こちらも参照してください

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

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

            
init() public メソッド

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

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

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

public void init ( )

                public function init()
{
}

            
instance() public static メソッド

定義されている場所: yii\base\StaticInstanceTrait::instance()

メタ情報を取得するために使用できる、静的クラスインスタンスを返します。

public static static instance ( $refresh false )
$refresh boolean

既にキャッシュされている場合でも、静的インスタンスを再作成するかどうか。

戻り値 yii\base\Model

クラスインスタンス。

                public static function instance($refresh = false)
{
    $className = get_called_class();
    if ($refresh || !isset(self::$_instances[$className])) {
        self::$_instances[$className] = Yii::createObject($className);
    }
    return self::$_instances[$className];
}

            
isAttributeActive() public メソッド

現在のシナリオで属性がアクティブかどうかを示す値を返します。

参照: activeAttributes()

public boolean isAttributeActive ( $attribute )
$attribute string

属性名

戻り値 boolean

属性が現在のシナリオで有効かどうか。

                public function isAttributeActive($attribute)
{
    return in_array($attribute, $this->activeAttributes(), true);
}

            
isAttributeRequired() public メソッド

属性が必須かどうかを示す値を返します。

これは、属性が現在の$scenariorequiredバリデーションルールに関連付けられているかどうかをチェックすることで判断されます。

$whenを使用して条件付きバリデーションが適用されている場合、このメソッドはモデルがデータでロードされる前に呼び出される可能性があるため、when条件に関係なくfalseを返します。

public boolean isAttributeRequired ( $attribute )
$attribute string

属性名

戻り値 boolean

属性が必須かどうか。

                public function isAttributeRequired($attribute)
{
    foreach ($this->getActiveValidators($attribute) as $validator) {
        if ($validator instanceof RequiredValidator && $validator->when === null) {
            return true;
        }
    }
    return false;
}

            
isAttributeSafe() public メソッド

属性が大量代入に対して安全かどうかを示す値を返します。

参照: safeAttributes()

public boolean isAttributeSafe ( $attribute )
$attribute string

属性名

戻り値 boolean

属性が大量代入に対して安全かどうか。

                public function isAttributeSafe($attribute)
{
    return in_array($attribute, $this->safeAttributes(), true);
}

            
load() public メソッド

入力データでモデルを設定します。

このメソッドは、以下の簡略化されたショートカットを提供します。

if (isset($_POST['FormName'])) {
    $model->attributes = $_POST['FormName'];
    if ($model->save()) {
        // handle success
    }
}

これは、`load()`を使うと以下のように記述できます。

if ($model->load($_POST) && $model->save()) {
    // handle success
}

`load()`は、`$formName`パラメータが指定されていない限り、モデルのformName()メソッド(オーバーライドできます)から`'FormName'`を取得します。フォーム名が空の場合、`load()`は`$data['FormName']`ではなく、`$data`全体でモデルを移入します。

移入されるデータは、setAttributes()による安全性のチェックの対象となります。

public boolean load ( $data, $formName null )
$data array

ロードするデータの配列。通常は`$_POST`または`$_GET`です。

$formName string|null

モデルにデータを読み込むために使用するフォーム名。フォームを使用しない場合は空文字列。設定されていない場合、formName()が使用されます。

戻り値 boolean

`load()`が`$data`内で期待されるフォームを見つけたかどうか。

                public function load($data, $formName = null)
{
    $scope = $formName === null ? $this->formName() : $formName;
    if ($scope === '' && !empty($data)) {
        $this->setAttributes($data);
        return true;
    } elseif (isset($data[$scope])) {
        $this->setAttributes($data[$scope]);
        return true;
    }
    return false;
}

            
loadMultiple() public static メソッド

エンドユーザーからのデータを使用して、一連のモデルを設定します。

このメソッドは主に、表形式のデータ入力の収集に使用されます。各モデルに対してロードされるデータは`$data[formName][index]`で、`formName`はformName()の値、`index`は`$models`配列内のモデルのインデックスです。formName()が空の場合、`$data[index]`を使用して各モデルに移入されます。各モデルに移入されるデータは、setAttributes()による安全性のチェックの対象となります。

public static boolean loadMultiple ( $models, $data, $formName null )
$models array

移入するモデル。すべてのモデルは同じクラスである必要があります。

$data array

データの配列。これは通常`$_POST`または`$_GET`ですが、エンドユーザーが提供する任意の有効な配列でもかまいません。

$formName string|null

モデルにデータを読み込むために使用するフォーム名。設定されていない場合、`$models`の最初のモデルのformName()値が使用されます。このパラメータはバージョン2.0.1から利用可能です。

戻り値 boolean

少なくとも1つのモデルが正常に移入されたかどうか。

                public static function loadMultiple($models, $data, $formName = null)
{
    if ($formName === null) {
        /* @var $first Model|false */
        $first = reset($models);
        if ($first === false) {
            return false;
        }
        $formName = $first->formName();
    }
    $success = false;
    foreach ($models as $i => $model) {
        /* @var $model Model */
        if ($formName == '') {
            if (!empty($data[$i]) && $model->load($data[$i], '')) {
                $success = true;
            }
        } elseif (!empty($data[$formName][$i]) && $model->load($data[$formName][$i], '')) {
            $success = true;
        }
    }
    return $success;
}

            
off() public メソッド

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

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

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

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

参照: on()

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

イベント名

$handler callable|null

削除するイベントハンドラー。nullの場合、名前付きイベントにアタッチされているすべてのハンドラーが削除されます。

戻り値 boolean

ハンドラーが見つかってデタッチされた場合。

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

            
offsetExists() public メソッド

指定されたオフセットに要素が存在するかどうかを返します。

このメソッドは、SPLインターフェースArrayAccessで必要です。`isset($model[$offset])`のようなものを使用すると暗黙的に呼び出されます。

public boolean offsetExists ( $offset )
$offset string

確認するオフセット。

戻り値 boolean

オフセットが存在するかどうか。

                #[\ReturnTypeWillChange]
public function offsetExists($offset)
{
    return isset($this->$offset);
}

            
offsetGet() public メソッド

指定されたオフセットの要素を返します。

このメソッドは、SPLインターフェースArrayAccessで必要です。`$value = $model[$offset];`のようなものを使用すると暗黙的に呼び出されます。

public mixed offsetGet ( $offset )
$offset string

要素を取得するオフセット。

戻り値 mixed

オフセットの位置にある要素。オフセットの位置に要素がない場合はnull。

                #[\ReturnTypeWillChange]
public function offsetGet($offset)
{
    return $this->$offset;
}

            
offsetSet() publicメソッド

指定されたオフセットに要素を設定します。

このメソッドは、SPLインターフェースArrayAccessで必要です。$model[$offset] = $value;のような記述を使用すると暗黙的に呼び出されます。

public void offsetSet ( $offset, $value )
$offset string

要素を設定するオフセット

$value mixed

要素の値

                #[\ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
    $this->$offset = $value;
}

            
offsetUnset() publicメソッド

指定されたオフセットの要素値をnullに設定します。

このメソッドは、SPLインターフェースArrayAccessで必要です。unset($model[$offset])のような記述を使用すると暗黙的に呼び出されます。

public void offsetUnset ( $offset )
$offset string

要素をアンセットするオフセット

                #[\ReturnTypeWillChange]
public function offsetUnset($offset)
{
    $this->$offset = null;
}

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

            
onUnsafeAttribute() publicメソッド

安全でない属性が大量に代入されている場合に呼び出されるメソッドです。

デフォルトの実装では、YII_DEBUGがオンの場合、警告メッセージをログに記録します。それ以外の場合は何も行いません。

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

安全でない属性名

$value mixed

属性値

                public function onUnsafeAttribute($name, $value)
{
    if (YII_DEBUG) {
        Yii::debug("Failed to set unsafe attribute '$name' in '" . get_class($this) . "'.", __METHOD__);
    }
}

            
resolveFields() protectedメソッド

定義場所: yii\base\ArrayableTrait::resolveFields()

toArray()で返されるフィールドを決定します。

このメソッドは、まず指定されたフィールドからルートフィールドを抽出し、次にfields()extraFields()で宣言されたフィールドに対して要求されたルートフィールドをチェックし、どのフィールドを返すことができるかを決定します。

protected array resolveFields ( array $fields, array $expand )
$fields array

エクスポートのために要求されているフィールド

$expand array

エクスポートのために要求されている追加のフィールド

戻り値 array

エクスポートされるフィールドのリスト。配列のキーはフィールド名、配列の値は対応するオブジェクトのプロパティ名またはフィールド値を返すPHPコールバックです。

                protected function resolveFields(array $fields, array $expand)
{
    $fields = $this->extractRootFields($fields);
    $expand = $this->extractRootFields($expand);
    $result = [];
    foreach ($this->fields() as $field => $definition) {
        if (is_int($field)) {
            $field = $definition;
        }
        if (empty($fields) || in_array($field, $fields, true)) {
            $result[$field] = $definition;
        }
    }
    if (empty($expand)) {
        return $result;
    }
    foreach ($this->extraFields() as $field => $definition) {
        if (is_int($field)) {
            $field = $definition;
        }
        if (in_array($field, $expand, true)) {
            $result[$field] = $definition;
        }
    }
    return $result;
}

            
rules() publicメソッド

属性のバリデーションルールを返します。

バリデーションルールは、validate()によって属性値が有効かどうかをチェックするために使用されます。子クラスはこのメソッドをオーバーライドして、異なるバリデーションルールを宣言できます。

各ルールは、以下の構造を持つ配列です。

[
    ['attribute1', 'attribute2'],
    'validator type',
    'on' => ['scenario1', 'scenario2'],
    //...other parameters...
]

ここで

  • 属性リスト:必須。バリデートされる属性の配列を指定します。単一属性の場合は文字列を渡すことができます。
  • バリデータタイプ:必須。使用するバリデータを示します。組み込みバリデータ名、モデルクラスのメソッド名、無名関数、またはバリデータクラス名にすることができます。
  • on:オプション。シナリオ配列を指定します。このオプションが設定されていない場合、ルールはすべてのシナリオに適用されます。
  • 対応するバリデータプロパティを初期化するために、追加の名前と値のペアを指定できます。可能なプロパティについては、個々のバリデータクラスのAPIを参照してください。

バリデータは、yii\validators\Validatorを拡張するクラスのオブジェクト、または以下のシグネチャを持つモデルクラスのメソッド(インラインバリデータと呼ばれます)のいずれかです。

// $params refers to validation parameters given in the rule
function validatorName($attribute, $params)

上記では、$attributeは現在バリデートされている属性を表し、$paramsmax(文字列バリデータの場合など)のようなバリデータ構成オプションの配列を含みます。現在バリデートされている属性の値は、$this->$attributeとしてアクセスできます。$attributeの前にある$は、変数$attributeの値を取得して、プロパティ名として使用することを意味します。

Yiiは、組み込みバリデータも提供しています。それぞれエイリアス名が割り当てられており、バリデーションルールの指定に使用できます。

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

[
    // built-in "required" validator
    [['username', 'password'], 'required'],
    // built-in "string" validator customized with "min" and "max" properties
    ['username', 'string', 'min' => 3, 'max' => 12],
    // built-in "compare" validator that is used in "register" scenario only
    ['password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'],
    // an inline validator defined via the "authenticate()" method in the model class
    ['password', 'authenticate', 'on' => 'login'],
    // a validator of class "DateRangeValidator"
    ['dateRange', 'DateRangeValidator'],
];

親クラスで定義されたルールを継承するには、子クラスはarray_merge()などの関数を使用して親ルールと子ルールをマージする必要があります。

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

public array rules ( )
戻り値 array

バリデーションルール

                public function rules()
{
    return [];
}

            
safeAttributes() publicメソッド

現在のシナリオで大量代入に対して安全な属性名を返します。

public string[] safeAttributes ( )
戻り値 string[]

安全な属性名

                public function safeAttributes()
{
    $scenario = $this->getScenario();
    $scenarios = $this->scenarios();
    if (!isset($scenarios[$scenario])) {
        return [];
    }
    $attributes = [];
    foreach ($scenarios[$scenario] as $attribute) {
        if (
            $attribute !== ''
            && strncmp($attribute, '!', 1) !== 0
            && !in_array('!' . $attribute, $scenarios[$scenario])
        ) {
            $attributes[] = $attribute;
        }
    }
    return $attributes;
}

            
scenarios() publicメソッド

シナリオと対応するアクティブな属性のリストを返します。

アクティブ属性とは、現在のシナリオでバリデーションの対象となる属性です。返される配列は、以下の形式である必要があります。

[
    'scenario1' => ['attribute11', 'attribute12', ...],
    'scenario2' => ['attribute21', 'attribute22', ...],
    ...
]

デフォルトでは、アクティブ属性は安全とみなされ、大量の割り当てが可能です。属性を大量に割り当ててはならない場合(安全ではないとみなされる場合)、属性の前に感嘆符(例:'!rank')を付けます。

このメソッドのデフォルトの実装は、rules()の宣言にあるすべてのシナリオを返します。SCENARIO_DEFAULTという特別なシナリオには、rules()にあるすべての属性が含まれます。各シナリオは、そのシナリオに適用されるバリデーションルールによってバリデートされる属性に関連付けられます。

public array scenarios ( )
戻り値 array

シナリオと対応するアクティブ属性のリスト。

                public function scenarios()
{
    $scenarios = [self::SCENARIO_DEFAULT => []];
    foreach ($this->getValidators() as $validator) {
        foreach ($validator->on as $scenario) {
            $scenarios[$scenario] = [];
        }
        foreach ($validator->except as $scenario) {
            $scenarios[$scenario] = [];
        }
    }
    $names = array_keys($scenarios);
    foreach ($this->getValidators() as $validator) {
        if (empty($validator->on) && empty($validator->except)) {
            foreach ($names as $name) {
                foreach ($validator->attributes as $attribute) {
                    $scenarios[$name][$attribute] = true;
                }
            }
        } elseif (empty($validator->on)) {
            foreach ($names as $name) {
                if (!in_array($name, $validator->except, true)) {
                    foreach ($validator->attributes as $attribute) {
                        $scenarios[$name][$attribute] = true;
                    }
                }
            }
        } else {
            foreach ($validator->on as $name) {
                foreach ($validator->attributes as $attribute) {
                    $scenarios[$name][$attribute] = true;
                }
            }
        }
    }
    foreach ($scenarios as $scenario => $attributes) {
        if (!empty($attributes)) {
            $scenarios[$scenario] = array_keys($attributes);
        }
    }
    return $scenarios;
}

            
setAttributes() publicメソッド

大量に属性値を設定します。

こちらも参照してください

public void setAttributes ( $values, $safeOnly true )
$values array

モデルに割り当てる属性値(名前 => 値)。

$safeOnly boolean

割り当てを安全な属性のみに実行するかどうか。安全な属性とは、現在の$scenarioでバリデーションルールに関連付けられている属性です。

                public function setAttributes($values, $safeOnly = true)
{
    if (is_array($values)) {
        $attributes = array_flip($safeOnly ? $this->safeAttributes() : $this->attributes());
        foreach ($values as $name => $value) {
            if (isset($attributes[$name])) {
                $this->$name = $value;
            } elseif ($safeOnly) {
                $this->onUnsafeAttribute($name, $value);
            }
        }
    }
}

            
setScenario() publicメソッド

モデルのシナリオを設定します。

このメソッドは、シナリオが存在するかどうかをチェックしません。メソッドvalidate()がこのチェックを実行します。

public void setScenario ( $value )
$value string

このモデルが存在するシナリオ。

                public function setScenario($value)
{
    $this->_scenario = $value;
}

            
toArray() publicメソッド

定義先: yii\base\ArrayableTrait::toArray()

モデルを配列に変換します。

このメソッドはまず、resolveFields() を呼び出すことで、結果の配列に含めるフィールドを特定します。その後、これらのフィールドを使用してモデルを配列に変換します。$recursive が true の場合、埋め込まれたオブジェクトも配列に変換されます。埋め込まれたオブジェクトが yii\base\Arrayable を実装している場合、それぞれのネストされたフィールドが抽出され、toArray() に渡されます。

モデルが yii\web\Linkable インターフェースを実装している場合、結果の配列には、インターフェースで指定されたリンクのリストを参照する _link 要素も含まれます。

public array toArray ( array $fields = [], array $expand = [], $recursive true )
$fields array

要求されたフィールド。空の場合、または '*' を含む場合、fields() で指定されたすべてのフィールドが返されます。フィールドはドット(.)で区切ってネストできます。例: item.field.sub-field ネストされたフィールドを抽出するには、$recursive を true にする必要があります。$recursive が false の場合、ルートフィールドのみが抽出されます。

$expand array

エクスポートのために要求された追加のフィールド。 extraFields() で宣言されたフィールドのみが考慮されます。expandもドット(.)で区切ってネストできます。例: item.expand1.expand2 ネストされたexpandを抽出するには、$recursive を true にする必要があります。$recursive が false の場合、ルートexpandのみが抽出されます。

$recursive boolean

埋め込まれたオブジェクトの配列表現を再帰的に返すかどうか。

戻り値 array

オブジェクトの配列表現

                public function toArray(array $fields = [], array $expand = [], $recursive = true)
{
    $data = [];
    foreach ($this->resolveFields($fields, $expand) as $field => $definition) {
        $attribute = is_string($definition) ? $this->$definition : $definition($this, $field);
        if ($recursive) {
            $nestedFields = $this->extractFieldsFor($fields, $field);
            $nestedExpand = $this->extractFieldsFor($expand, $field);
            if ($attribute instanceof Arrayable) {
                $attribute = $attribute->toArray($nestedFields, $nestedExpand);
            } elseif ($attribute instanceof \JsonSerializable) {
                $attribute = $attribute->jsonSerialize();
            } elseif (is_array($attribute)) {
                $attribute = array_map(
                    function ($item) use ($nestedFields, $nestedExpand) {
                        if ($item instanceof Arrayable) {
                            return $item->toArray($nestedFields, $nestedExpand);
                        } elseif ($item instanceof \JsonSerializable) {
                            return $item->jsonSerialize();
                        }
                        return $item;
                    },
                    $attribute
                );
            }
        }
        $data[$field] = $attribute;
    }
    if ($this instanceof Linkable) {
        $data['_links'] = Link::serialize($this->getLinks());
    }
    return $recursive ? ArrayHelper::toArray($data) : $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メソッド

データのバリデーションを実行します。

このメソッドは、現在の$scenarioに適用可能な検証ルールを実行します。ルールが現在適用可能かどうかを判断するには、次の基準が使用されます。

  • ルールは、現在のシナリオに関連する属性に関連付けられている必要があります。
  • ルールは、現在のシナリオで有効である必要があります。

このメソッドは、実際の検証の前後にそれぞれ beforeValidate()afterValidate() を呼び出します。beforeValidate() が false を返す場合、検証はキャンセルされ、afterValidate() は呼び出されません。

検証中に見つかったエラーは、getErrors()getFirstErrors()、および getFirstError() を介して取得できます。

public boolean validate ( $attributeNames null, $clearErrors true )
$attributeNames string[]|string|null

検証する必要がある属性名、または属性名のリスト。このパラメータが空の場合、適用可能な検証ルールにリストされている属性をすべて検証する必要があります。

$clearErrors boolean

検証を実行する前に clearErrors() を呼び出すかどうか。

戻り値 boolean

エラーなく検証が成功したかどうか。

例外 yii\base\InvalidArgumentException

現在のシナリオが不明な場合。

                public function validate($attributeNames = null, $clearErrors = true)
{
    if ($clearErrors) {
        $this->clearErrors();
    }
    if (!$this->beforeValidate()) {
        return false;
    }
    $scenarios = $this->scenarios();
    $scenario = $this->getScenario();
    if (!isset($scenarios[$scenario])) {
        throw new InvalidArgumentException("Unknown scenario: $scenario");
    }
    if ($attributeNames === null) {
        $attributeNames = $this->activeAttributes();
    }
    $attributeNames = (array)$attributeNames;
    foreach ($this->getActiveValidators() as $validator) {
        $validator->validateAttributes($this, $attributeNames);
    }
    $this->afterValidate();
    return !$this->hasErrors();
}

            
validateMultiple() public staticメソッド

複数のモデルをバリデートします。

このメソッドは、すべてのモデルを検証します。検証されるモデルは、同じタイプでも異なるタイプでもかまいません。

public static boolean validateMultiple ( $models, $attributeNames null )
$models array

検証するモデル

$attributeNames array|null

検証する必要がある属性名のリスト。このパラメータが空の場合、適用可能な検証ルールにリストされている属性をすべて検証する必要があります。

戻り値 boolean

すべてのモデルが有効かどうか。1つ以上のモデルに検証エラーがある場合、falseが返されます。

                public static function validateMultiple($models, $attributeNames = null)
{
    $valid = true;
    /* @var $model Model */
    foreach ($models as $model) {
        $valid = $model->validate($attributeNames) && $valid;
    }
    return $valid;
}

            

イベントの詳細

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

EVENT_AFTER_VALIDATE yii\base\Event タイプのイベント

validate()の最後に発生するイベント

EVENT_BEFORE_VALIDATE yii\base\ModelEvent タイプのイベント

validate() の開始時に発生するイベント。yii\base\ModelEvent::$isValid を false に設定して、検証を停止できます。