0 フォロワー

クラス yii\captcha\Captcha

継承yii\captcha\Captcha » yii\widgets\InputWidget » yii\base\Widget » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable, yii\base\ViewContextInterface
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/captcha/Captcha.php

Captcha は CAPTCHA 画像と、ユーザーが入力した検証コードを受け取る入力フィールドをレンダリングします。

Captcha は、ウェブサイトのスパムを防止する手段である CAPTCHA を提供するために、yii\captcha\CaptchaAction とともに使用されます。

Captcha によってレンダリングされる画像要素は、ルートが $captchaAction で指定されたアクションによって生成された CAPTCHA 画像を表示します。このアクションは yii\captcha\CaptchaAction のインスタンスでなければなりません。

ユーザーが CAPTCHA 画像をクリックすると、CAPTCHA 画像が新しい CAPTCHA で更新されます。

現在の CAPTCHA 検証コードと一致するユーザー入力を検証するために、yii\captcha\CaptchaValidator を使用できます。

次の例は、このウィジェットをモデル属性とともに使用する方法を示しています

echo Captcha::widget([
    'model' => $model,
    'attribute' => 'captcha',
]);

次の例では、代わりに name プロパティを使用します

echo Captcha::widget([
    'name' => 'captcha',
]);

このウィジェットは、ActiveForm で、例えば次のように widget() メソッドを使用することもできます

<?= $form->field($model, 'captcha')->widget(\yii\captcha\Captcha::classname(), [
    // configure additional widget properties here
]) ?>

公開プロパティ

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

プロパティ タイプ 説明 定義元
$attribute 文字列|null このウィジェットが関連付けられているモデル属性。 yii\widgets\InputWidget
$autoIdPrefix 文字列 自動生成されたウィジェット ID の接頭辞。 yii\base\Widget
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$captchaAction 文字列|配列 CAPTCHA 画像を生成するアクションのルート。 yii\captcha\Captcha
$field yii\widgets\ActiveField このウィジェットのレンダリングをトリガーするアクティブな入力フィールド。 yii\widgets\InputWidget
$id 文字列|null ウィジェットのID。 yii\base\Widget
$imageOptions 配列 CAPTCHA 画像タグに適用される HTML 属性。 yii\captcha\Captcha
$model yii\base\Model|null このウィジェットが関連付けられているデータモデル。 yii\widgets\InputWidget
$name 文字列|null 入力名。 yii\widgets\InputWidget
$options 配列 入力タグの HTML 属性。 yii\captcha\Captcha
$template 文字列 CAPTCHA 画像タグとテキスト入力タグを配置するためのテンプレート。 yii\captcha\Captcha
$value 文字列 入力値。 yii\widgets\InputWidget
$view yii\web\View ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクト。 yii\base\Widget
$viewPath 文字列 このウィジェットのビューファイルを含むディレクトリ。 yii\base\Widget

公開メソッド

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

メソッド 説明 定義元
__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
afterRun() このメソッドは、ウィジェットが実行された直後に呼び出されます。 yii\base\Widget
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() ビヘイビアのリストをコンポーネントにアタッチします。 yii\base\Component
beforeRun() このメソッドは、ウィジェットが実行される直前に呼び出されます。 yii\base\Widget
begin() ウィジェットを開始します。 yii\base\Widget
behaviors() このコンポーネントが動作する必要があるビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取れるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
checkRequirements() CAPTCHA 画像を生成するために使用できるグラフィック拡張機能があるかどうかを確認します。 yii\captcha\Captcha
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
end() ウィジェットを終了します。 yii\base\Widget
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getBehavior() 指定された名前のビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされたすべてのビヘイビアを返します。 yii\base\Component
getId() ウィジェットの ID を返します。 yii\base\Widget
getView() ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクトを返します。 yii\base\Widget
getViewPath() このウィジェットのビューファイルを含むディレクトリを返します。 yii\base\Widget
hasEventHandlers() 指定された名前のイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() ウィジェットを初期化します。 yii\captcha\Captcha
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
registerClientScript() 必要な JavaScript を登録します。 yii\captcha\Captcha
render() ビューをレンダリングします。 yii\base\Widget
renderFile() ビューファイルをレンダリングします。 yii\base\Widget
run() ウィジェットをレンダリングします。 yii\captcha\Captcha
setId() ウィジェットの ID を設定します。 yii\base\Widget
setView() このウィジェットで使用されるビューオブジェクトを設定します。 yii\base\Widget
trigger() イベントをトリガーします。 yii\base\Component
widget() ウィジェットのインスタンスを作成して実行します。 yii\base\Widget

保護されたメソッド

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

メソッド 説明 定義元
getClientOptions() captcha JS ウィジェットのオプションを返します。 yii\captcha\Captcha
hasModel() yii\widgets\InputWidget
renderInputHtml() HTML 入力タグをレンダリングします。 yii\widgets\InputWidget

イベント

継承されたイベントを隠す

イベント タイプ 説明 定義元
EVENT_AFTER_RUN yii\base\WidgetEvent ウィジェットを実行した直後に発生するイベント。(バージョン 2.0.11 以降で利用可能) yii\base\Widget
EVENT_BEFORE_RUN yii\base\WidgetEvent ウィジェットを実行する直前に発生するイベントです。(バージョン 2.0.11 から利用可能) yii\base\Widget
EVENT_INIT yii\base\Event init() を介してウィジェットが初期化されるときにトリガーされるイベントです。(バージョン 2.0.11 から利用可能) yii\base\Widget

プロパティの詳細

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

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

CAPTCHA 画像を生成するアクションのルート。このルートで表されるアクションは、yii\captcha\CaptchaAction のアクションである必要があります。許容される形式については、yii\helpers\Url::toRoute() を参照してください。

public string|array $captchaAction 'site/captcha'
$imageOptions パブリックプロパティ

CAPTCHA 画像タグに適用される HTML 属性。

属性のレンダリング方法の詳細については、yii\helpers\Html::renderTagAttributes() を参照してください。

public array $imageOptions = []
$options パブリックプロパティ

入力タグの HTML 属性。

属性のレンダリング方法の詳細については、yii\helpers\Html::renderTagAttributes() を参照してください。

public array $options = [
    
'class' => 'form-control',
]
$template パブリックプロパティ

CAPTCHA 画像タグとテキスト入力タグを配置するためのテンプレート。このテンプレートでは、トークン {image} は実際の画像タグに置き換えられ、{input} はテキスト入力タグに置き換えられます。

public string $template '{image} {input}'

メソッドの詳細

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

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

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

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

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

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

public mixed __call ( $name, $params )
$name 文字列

メソッド名

$params 配列

メソッドのパラメータ

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

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

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

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

public void __clone ( )

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

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

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

コンストラクター。

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

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

このメソッドが子クラスでオーバーライドされる場合、次のことが推奨されます。

  • コンストラクタの最後のパラメータは、ここでの $config のように、設定配列であること。
  • コンストラクタの最後に親の実装を呼び出すこと。
public void __construct ( $config = [] )
$config 配列

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

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

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

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

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

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

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

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

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

public mixed __get ( $name )
$name 文字列

プロパティ名

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

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

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

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

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

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

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

public boolean __isset ( $name )
$name 文字列

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

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

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

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

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

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

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

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

public void __set ( $name, $value )
$name 文字列

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

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

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

プロパティ名

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

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

定義元: yii\base\Widget::afterRun()

このメソッドは、ウィジェットが実行された直後に呼び出されます。

このメソッドは EVENT_AFTER_RUN イベントをトリガーします。メソッドの戻り値は、ウィジェットの戻り値として使用されます。

このメソッドをオーバーライドする場合、コードは次のようになるはずです。

public function afterRun($result)
{
    $result = parent::afterRun($result);
    // your custom code here
    return $result;
}
public mixed afterRun ( $result )
$result mixed

ウィジェットの戻り結果。

return mixed

処理済みのウィジェット結果。

                public function afterRun($result)
{
    $event = new WidgetEvent();
    $event->result = $result;
    $this->trigger(self::EVENT_AFTER_RUN, $event);
    return $event->result;
}

            
attachBehavior() public メソッド

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

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

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

参照:detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name 文字列

ビヘイビアの名前。

$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 配列

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

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

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

定義元: yii\base\Widget::beforeRun()

このメソッドは、ウィジェットが実行される直前に呼び出されます。

このメソッドは EVENT_BEFORE_RUN イベントをトリガーします。メソッドの戻り値は、ウィジェットの実行を続行するかどうかを決定します。

このメソッドをオーバーライドするときは、次のように親の実装を呼び出すようにしてください。

public function beforeRun()
{
    if (!parent::beforeRun()) {
        return false;
    }

    // your custom code here

    return true; // or false to not run the widget
}
public boolean beforeRun ( )
return boolean

ウィジェットの実行を続行するかどうか。

                public function beforeRun()
{
    $event = new WidgetEvent();
    $this->trigger(self::EVENT_BEFORE_RUN, $event);
    return $event->isValid;
}

            
begin() public static メソッド

定義元: yii\base\Widget::begin()

ウィジェットを開始します。

このメソッドは、呼び出し元のクラスのインスタンスを作成します。作成されたインスタンスに構成が適用されます。後で、一致する end() 呼び出しを呼び出す必要があります。一部のウィジェットが出力バッファリングを使用する可能性があるため、end() 呼び出しは、出力バッファのネストが壊れないように、同じビュー内で行う必要があります。

参照:end()

public static static begin ( $config = [] )
$config 配列

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

return yii\base\Widget

新しく作成されたウィジェットインスタンス

                public static function begin($config = [])
{
    $config['class'] = get_called_class();
    /* @var $widget Widget */
    $widget = Yii::createObject($config);
    self::$stack[] = $widget;
    return $widget;
}

            
behaviors() public メソッド

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

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

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

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

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

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

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

public array behaviors ( )
return 配列

ビヘイビア構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

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

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

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

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

参照:canSetProperty()

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name 文字列

プロパティ名

$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 文字列

プロパティ名

$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;
}

            
checkRequirements() public static メソッド

CAPTCHA 画像を生成するために使用できるグラフィック拡張機能があるかどうかを確認します。

このメソッドは、ImageMagick および GD 拡張機能の存在を確認します。

public static string checkRequirements ( )
return 文字列

グラフィック拡張機能の名前。"imagick" または "gd" のいずれか。

throws yii\base\InvalidConfigException

ImageMagick も GD もインストールされていない場合。

                public static function checkRequirements()
{
    if (extension_loaded('imagick')) {
        $imagickFormats = (new \Imagick())->queryFormats('PNG');
        if (in_array('PNG', $imagickFormats, true)) {
            return 'imagick';
        }
    }
    if (extension_loaded('gd')) {
        $gdInfo = gd_info();
        if (!empty($gdInfo['FreeType Support'])) {
            return 'gd';
        }
    }
    throw new InvalidConfigException('Either GD PHP extension with FreeType support or ImageMagick PHP extension with PNG support is required.');
}

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

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

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

public static string className ( )
return 文字列

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

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

            
detachBehavior() public method

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

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

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

public yii\base\Behavior|null detachBehavior ( $name )
$name 文字列

ビヘイビアの名前。

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

            
end() public static method

定義元: yii\base\Widget::end()

ウィジェットを終了します。

ウィジェットのレンダリング結果が直接出力されることに注意してください。

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

public static static end ( )
return yii\base\Widget

終了したウィジェットのインスタンス。

throws yii\base\InvalidCallException

begin()end() の呼び出しが適切にネストされていない場合

                public static function end()
{
    if (!empty(self::$stack)) {
        $widget = array_pop(self::$stack);
        $calledClass = get_called_class();
        if (Yii::$container->has($calledClass) && isset(Yii::$container->getDefinitions()[$calledClass]['class'])) {
            $calledClass = Yii::$container->getDefinitions()[$calledClass]['class'];
        }
        if (get_class($widget) === $calledClass) {
            /* @var $widget Widget */
            if ($widget->beforeRun()) {
                $result = $widget->run();
                $result = $widget->afterRun($result);
                echo $result;
            }
            return $widget;
        }
        throw new InvalidCallException('Expecting end() of ' . get_class($widget) . ', found ' . get_called_class());
    }
    throw new InvalidCallException('Unexpected ' . get_called_class() . '::end() call. A matching begin() is not found.');
}

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

            
getBehavior() public method

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

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

public yii\base\Behavior|null getBehavior ( $name )
$name 文字列

ビヘイビア名

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

captcha JS ウィジェットのオプションを返します。

protected array getClientOptions ( )
return 配列

オプション

                protected function getClientOptions()
{
    $route = $this->captchaAction;
    if (is_array($route)) {
        $route[CaptchaAction::REFRESH_GET_VAR] = 1;
    } else {
        $route = [$route, CaptchaAction::REFRESH_GET_VAR => 1];
    }
    $options = [
        'refreshUrl' => Url::toRoute($route),
        'hashKey' => 'yiiCaptcha/' . trim($route[0], '/'),
    ];
    return $options;
}

            
getId() public method

定義元: yii\base\Widget::getId()

ウィジェットの ID を返します。

public string|null getId ( $autoGenerate true )
$autoGenerate boolean

以前に設定されていない場合に ID を生成するかどうか

return 文字列|null

ウィジェットのID。

                public function getId($autoGenerate = true)
{
    if ($autoGenerate && $this->_id === null) {
        $this->_id = static::$autoIdPrefix . static::$counter++;
    }
    return $this->_id;
}

            
getView() public method

定義元: yii\base\Widget::getView()

ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクトを返します。

render() および renderFile() メソッドは、このビューオブジェクトを使用して実際のビューレンダリングを実装します。設定されていない場合は、デフォルトで「view」アプリケーションコンポーネントになります。

public yii\web\View getView ( )
return yii\web\View

ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクト。

                public function getView()
{
    if ($this->_view === null) {
        $this->_view = Yii::$app->getView();
    }
    return $this->_view;
}

            
getViewPath() public method

定義元: yii\base\Widget::getViewPath()

このウィジェットのビューファイルを含むディレクトリを返します。

デフォルトの実装では、ウィジェットクラスファイルを含むディレクトリの下にある「views」サブディレクトリを返します。

public string getViewPath ( )
return 文字列

このウィジェットのビューファイルを含むディレクトリ。

                public function getViewPath()
{
    $class = new ReflectionClass($this);
    return dirname($class->getFileName()) . DIRECTORY_SEPARATOR . 'views';
}

            
hasEventHandlers() public method

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

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

public boolean hasEventHandlers ( $name )
$name 文字列

イベント名

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 method

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

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

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

  • クラスに指定された名前のメソッドがある
  • アタッチされたビヘイビアに、指定された名前のメソッドがある($checkBehaviors が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name 文字列

プロパティ名

$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;
}

            
hasModel() protected メソッド
protected boolean hasModel ( )
return boolean

このウィジェットがデータモデルに関連付けられているかどうか。

                protected function hasModel()
{
    return $this->model instanceof Model && $this->attribute !== null;
}

            
hasProperty() public メソッド

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

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

プロパティが定義されているのは、以下のいずれかの場合です。

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

参照

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name 文字列

プロパティ名

$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();
    static::checkRequirements();
    if (!isset($this->imageOptions['id'])) {
        $this->imageOptions['id'] = $this->options['id'] . '-image';
    }
}

            
off() public メソッド

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

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

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

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

参照 on().

public boolean off ( $name, $handler null )
$name 文字列

イベント名

$handler callable|null

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

return boolean

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

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

            
on() public メソッド

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

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

イベントハンドラは有効なPHPコールバックである必要があります。以下にいくつかの例を示します。

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

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

function ($event)

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

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

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

参照 off().

public void on ( $name, $handler, $data null, $append true )
$name 文字列

イベント名

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

            
registerClientScript() public メソッド

必要な JavaScript を登録します。

public void registerClientScript ( )

                public function registerClientScript()
{
    $options = $this->getClientOptions();
    $options = empty($options) ? '' : Json::htmlEncode($options);
    $id = $this->imageOptions['id'];
    $view = $this->getView();
    CaptchaAsset::register($view);
    $view->registerJs("jQuery('#$id').yiiCaptcha($options);");
}

            
render() public メソッド

定義元: yii\base\Widget::render()

ビューをレンダリングします。

レンダリングされるビューは、次のいずれかの形式で指定できます。

  • パスエイリアス (例: "@app/views/site/index");
  • アプリケーション内の絶対パス (例: "//site/index"): ビュー名は二重スラッシュで始まります。実際のビューファイルは、アプリケーションの ビューパス の下で検索されます。
  • モジュール内の絶対パス (例: "/site/index"): ビュー名は単一のスラッシュで始まります。実際のビューファイルは、現在アクティブなモジュールの ビューパス の下で検索されます。
  • 相対パス (例: "index"): 実際のビューファイルは $viewPath の下で検索されます。

ビュー名にファイル拡張子が含まれていない場合は、デフォルトの .php が使用されます。

public string render ( $view, $params = [] )
$view 文字列

ビュー名。

$params 配列

ビューで使用できるようにするパラメータ (名前と値のペア)。

return 文字列

レンダリング結果。

throws yii\base\InvalidArgumentException

ビューファイルが存在しない場合。

                public function render($view, $params = [])
{
    return $this->getView()->render($view, $params, $this);
}

            
renderFile() public メソッド

定義元: yii\base\Widget::renderFile()

ビューファイルをレンダリングします。

public string renderFile ( $file, $params = [] )
$file 文字列

レンダリングするビューファイル。これは、ファイルパスまたは パスエイリアス のいずれかです。

$params 配列

ビューで使用できるようにするパラメータ (名前と値のペア)。

return 文字列

レンダリング結果。

throws yii\base\InvalidArgumentException

ビューファイルが存在しない場合。

                public function renderFile($file, $params = [])
{
    return $this->getView()->renderFile($file, $params, $this);
}

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

定義元: yii\widgets\InputWidget::renderInputHtml()

HTML 入力タグをレンダリングします。

これは、入力ウィジェットが モデルに関連付けられている 場合は yii\helpers\Html::activeInput() を呼び出し、そうでない場合は yii\helpers\Html::input() を呼び出します。

参照

protected string renderInputHtml ( $type )
$type 文字列

作成する入力のタイプ。

return 文字列

入力フィールドのHTML。

                protected function renderInputHtml($type)
{
    if ($this->hasModel()) {
        return Html::activeInput($type, $this->model, $this->attribute, $this->options);
    }
    return Html::input($type, $this->name, $this->value, $this->options);
}

            
run() public メソッド

ウィジェットをレンダリングします。

public void run ( )

                public function run()
{
    $this->registerClientScript();
    $input = $this->renderInputHtml('text');
    $route = $this->captchaAction;
    if (is_array($route)) {
        $route['v'] = uniqid('', true);
    } else {
        $route = [$route, 'v' => uniqid('', true)];
    }
    $image = Html::img($route, $this->imageOptions);
    echo strtr($this->template, [
        '{input}' => $input,
        '{image}' => $image,
    ]);
}

            
setId() public メソッド

定義元: yii\base\Widget::setId()

ウィジェットの ID を設定します。

public void setId ( $value )
$value 文字列

ウィジェットのID。

                public function setId($value)
{
    $this->_id = $value;
}

            
setView() public メソッド

定義元: yii\base\Widget::setView()

このウィジェットで使用されるビューオブジェクトを設定します。

public void setView ( $view )
$view yii\base\View

ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクト。

                public function setView($view)
{
    $this->_view = $view;
}

            
trigger() public メソッド

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

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

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

public void trigger ( $name, yii\base\Event $event null )
$name 文字列

イベント名

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

            
widget() public static メソッド

定義元: yii\base\Widget::widget()

ウィジェットのインスタンスを作成して実行します。

このメソッドによって、ウィジェットのレンダリング結果が返されます。

public static string widget ( $config = [] )
$config 配列

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

return 文字列

ウィジェットのレンダリング結果。

throws Throwable

                public static function widget($config = [])
{
    ob_start();
    ob_implicit_flush(false);
    try {
        /* @var $widget Widget */
        $config['class'] = get_called_class();
        $widget = Yii::createObject($config);
        $out = '';
        if ($widget->beforeRun()) {
            $result = $widget->run();
            $out = $widget->afterRun($result);
        }
    } catch (\Exception $e) {
        // close the output buffer opened above if it has not been closed already
        if (ob_get_level() > 0) {
            ob_end_clean();
        }
        throw $e;
    } catch (\Throwable $e) {
        // close the output buffer opened above if it has not been closed already
        if (ob_get_level() > 0) {
            ob_end_clean();
        }
        throw $e;
    }
    return ob_get_clean() . $out;
}