1 フォロワー

クラス yii\web\Controller

継承yii\web\Controller » yii\base\Controller » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurableyii\base\ViewContextInterface
サブクラスyii\rest\ActiveControlleryii\rest\Controller
利用可能バージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/web/Controller.php

Controller は、Web コントローラーの基底クラスです。

Controller の詳細と使用方法については、コントローラーに関するガイド記事を参照してください。

公開プロパティ

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

プロパティ 説明 定義元
$action yii\base\Action|null 現在実行中のアクション。 yii\base\Controller
$actionParams array 現在のアクションにバインドされているパラメーター。 yii\web\Controller
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされているビヘイビアのリスト。 yii\base\Component
$defaultAction string リクエストでアクションIDが指定されていない場合に使用されるアクションのID。 yii\base\Controller
$enableCsrfValidation boolean このコントローラーのアクションでCSRF検証を有効にするかどうか。 yii\web\Controller
$id string このコントローラーのID。 yii\base\Controller
$layout string|null|false このコントローラーのビューに適用されるレイアウトの名前。 yii\base\Controller
$module yii\base\Module このコントローラーが属するモジュール。 yii\base\Controller
$modules yii\base\Module[] このコントローラーが含まれるすべての祖先モジュール。 yii\base\Controller
$request yii\base\Request|array|string リクエスト。 yii\base\Controller
$response yii\base\Response|array|string レスポンス。 yii\base\Controller
$route string 現在のリクエストのルート(モジュールID、コントローラーID、アクションID)。 yii\base\Controller
$uniqueId string モジュールID(存在する場合)をプレフィックスとして付けたコントローラーID。 yii\base\Controller
$view yii\base\View|yii\web\View ビューまたはビューファイルのレンダリングに使用できるビューオブジェクト。 yii\base\Controller
$viewPath string このコントローラーのビューファイルを含むディレクトリ。 yii\base\Controller

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() yii\base\Controller
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているかどうか(定義されていてnullではない)を確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
actions() コントローラーの外部アクションを宣言します。 yii\base\Controller
afterAction() このメソッドは、アクションの実行直後に呼び出されます。 yii\base\Controller
asJson() JSON形式でフォーマットされたデータを送信します。 yii\web\Controller
asXml() XML形式でフォーマットされたデータを送信します。 yii\web\Controller
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
beforeAction() このメソッドは、アクションの実行直前に呼び出されます。 yii\web\Controller
behaviors() このコンポーネントが持つべきビヘイビアのリストを返します。 yii\base\Component
bindActionParams() パラメーターをアクションにバインドします。 yii\web\Controller
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
createAction() 指定されたアクションIDに基づいてアクションを作成します。 yii\base\Controller
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
findLayoutFile() 適用可能なレイアウトファイルを見つけます。 yii\base\Controller
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getModules() このコントローラーのすべての祖先モジュールを返します。 yii\base\Controller
getRoute() 現在のリクエストのルートを返します。 yii\base\Controller
getUniqueId() コントローラーの一意のIDを返します。 yii\base\Controller
getView() ビューまたはビューファイルのレンダリングに使用できるビューオブジェクトを返します。 yii\base\Controller
getViewPath() このコントローラーのビューファイルを含むディレクトリを返します。 yii\base\Controller
goBack() ブラウザーを最後にアクセスしたページにリダイレクトします。 yii\web\Controller
goHome() ブラウザーをホームページにリダイレクトします。 yii\web\Controller
hasEventHandlers() 指定されたイベントにアタッチされているハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\base\Controller
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
redirect() ブラウザーを指定されたURLにリダイレクトします。 yii\web\Controller
refresh() 現在のページを更新します。 yii\web\Controller
render() ビューをレンダリングし、レイアウトが利用可能な場合は適用します。 yii\base\Controller
renderAjax() AJAXリクエストに応答してビューをレンダリングします。 yii\web\Controller
renderContent() レイアウトを適用して静的文字列をレンダリングします。 yii\base\Controller
renderFile() ビューファイルをレンダリングします。 yii\base\Controller
renderPartial() レイアウトを適用せずにビューをレンダリングします。 yii\base\Controller
run() ルートで指定されたリクエストを実行します。 yii\base\Controller
runAction() 指定されたアクションIDとパラメーターを使用して、このコントローラー内でアクションを実行します。 yii\base\Controller
setView() このコントローラーで使用されるビューオブジェクトを設定します。 yii\base\Controller
setViewPath() ビューファイルを含むディレクトリを設定します。 yii\base\Controller
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
bindInjectedParams() アクションメソッドのシグネチャにある型と名前に基づいてパラメータを設定します。 yii\base\Controller

イベント

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

イベント 説明 定義元
EVENT_AFTER_ACTION yii\base\ActionEvent コントローラアクションの実行直後に発生するイベントです。 yii\base\Controller
EVENT_BEFORE_ACTION yii\base\ActionEvent コントローラアクションの実行直前に発生するイベントです。 yii\base\Controller

プロパティの詳細

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

$actionParams public property

現在のアクションにバインドされているパラメーター。

public array $actionParams = []
$enableCsrfValidation public property

このコントローラのアクションでCSRF検証を有効にするかどうか。このプロパティとyii\web\Request::$enableCsrfValidationの両方がtrueの場合にのみ、CSRF検証が有効になります。

メソッドの詳細

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

__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 method

定義場所: yii\base\Component::__clone()

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

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

public void __clone ( )

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

            
__construct() public method
public void __construct ( $id, $module, $config = [] )
$id string

このコントローラーのID。

$module yii\base\Module

このコントローラーが属するモジュール。

$config array

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

                public function __construct($id, $module, $config = [])
{
    $this->id = $id;
    $this->module = $module;
    parent::__construct($config);
}

            
__get() public method

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

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

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

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

            
actions() public method

定義場所: yii\base\Controller::actions()

コントローラーの外部アクションを宣言します。

このメソッドは、コントローラの外部アクションを宣言するためにオーバーライドすることを目的としています。アクションIDをキー、対応するアクションクラス名またはアクション設定配列を値とする配列を返す必要があります。例えば、

return [
    'action1' => 'app\components\Action1',
    'action2' => [
        'class' => 'app\components\Action2',
        'property1' => 'value1',
        'property2' => 'value2',
    ],
];

後でYii::createObject()を使用して、ここで提供された設定を使用して要求されたアクションが作成されます。

public array actions ( )

                public function actions()
{
    return [];
}

            
afterAction() public メソッド

定義位置: yii\base\Controller::afterAction()

このメソッドは、アクションの実行直後に呼び出されます。

このメソッドは、EVENT_AFTER_ACTION イベントをトリガーします。メソッドの戻り値は、アクションの戻り値として使用されます。

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

public function afterAction($action, $result)
{
    $result = parent::afterAction($action, $result);
    // your custom code here
    return $result;
}
public mixed afterAction ( $action, $result )
$action yii\base\Action

実行されたばかりのアクション。

$result mixed

アクションの戻り値。

戻り値 mixed

処理されたアクションの結果。

                public function afterAction($action, $result)
{
    $event = new ActionEvent($action);
    $event->result = $result;
    $this->trigger(self::EVENT_AFTER_ACTION, $event);
    return $event->result;
}

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

JSON形式でフォーマットされたデータを送信します。

このメソッドは、JSON形式でフォーマットされたデータを送信するためのショートカットです。response アプリケーションコンポーネントを、format を設定し、フォーマットする必要があるdata を設定した後に返します。一般的な使い方は次のようになります。

return $this->asJson($data);

参照

public yii\web\Response asJson ( $data )
$data mixed

フォーマットする必要があるデータ。

戻り値 yii\web\Response

JSONとしてフォーマットされた$dataを送信するように設定されたレスポンス。

                public function asJson($data)
{
    $this->response->format = Response::FORMAT_JSON;
    $this->response->data = $data;
    return $this->response;
}

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

XML形式でフォーマットされたデータを送信します。

このメソッドは、XML形式でフォーマットされたデータを送信するためのショートカットです。response アプリケーションコンポーネントを、format を設定し、フォーマットする必要があるdata を設定した後に返します。一般的な使い方は次のようになります。

return $this->asXml($data);

参照

public yii\web\Response asXml ( $data )
$data mixed

フォーマットする必要があるデータ。

戻り値 yii\web\Response

XMLとしてフォーマットされた$dataを送信するように設定されたレスポンス。

                public function asXml($data)
{
    $this->response->format = Response::FORMAT_XML;
    $this->response->data = $data;
    return $this->response;
}

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

            
beforeAction() public メソッド

このメソッドは、アクションの実行直前に呼び出されます。

このメソッドは、EVENT_BEFORE_ACTION イベントをトリガーします。メソッドの戻り値によって、アクションを実行するかどうかが決まります。

アクションを実行しない場合、必要な出力を提供するか、リクエストをリダイレクトすることで、beforeActionコード内でリクエストを処理する必要があります。それ以外の場合は、レスポンスは空になります。

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

public function beforeAction($action)
{
    // your custom code here, if you want the code to run before action filters,
    // which are triggered on the [[EVENT_BEFORE_ACTION]] event, e.g. PageCache or AccessControl

    if (!parent::beforeAction($action)) {
        return false;
    }

    // other custom code here

    return true; // or false to not run the action
}
public boolean beforeAction ( $action )
$action yii\base\Action

実行するアクション。

戻り値 boolean

アクションを実行するかどうか。

                public function beforeAction($action)
{
    if (parent::beforeAction($action)) {
        if ($this->enableCsrfValidation && Yii::$app->getErrorHandler()->exception === null && !$this->request->validateCsrfToken()) {
            throw new BadRequestHttpException(Yii::t('yii', 'Unable to verify your data submission.'));
        }
        return true;
    }
    return false;
}

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

            
bindActionParams() public メソッド

パラメーターをアクションにバインドします。

このメソッドは、指定されたパラメーターで実行を開始するときにyii\base\Actionによって呼び出されます。このメソッドは、アクションに必要なパラメーター名をチェックし、必要に応じて提供されたパラメーターを返します。パラメーターが不足している場合、例外がスローされます。

public array bindActionParams ( $action, $params )
$action yii\base\Action

パラメーターとバインドするアクション

$params array

アクションにバインドするパラメーター

戻り値 array

アクションが実行できる有効なパラメーター。

例外 yii\web\BadRequestHttpException

パラメーターが不足しているか無効な場合。

                public function bindActionParams($action, $params)
{
    if ($action instanceof InlineAction) {
        $method = new \ReflectionMethod($this, $action->actionMethod);
    } else {
        $method = new \ReflectionMethod($action, 'run');
    }
    $args = [];
    $missing = [];
    $actionParams = [];
    $requestedParams = [];
    foreach ($method->getParameters() as $param) {
        $name = $param->getName();
        if (array_key_exists($name, $params)) {
            $isValid = true;
            if (PHP_VERSION_ID >= 80000) {
                $isArray = ($type = $param->getType()) instanceof \ReflectionNamedType && $type->getName() === 'array';
            } else {
                $isArray = $param->isArray();
            }
            if ($isArray) {
                $params[$name] = (array)$params[$name];
            } elseif (is_array($params[$name])) {
                $isValid = false;
            } elseif (
                PHP_VERSION_ID >= 70000
                && ($type = $param->getType()) !== null
                && method_exists($type, 'isBuiltin')
                && $type->isBuiltin()
                && ($params[$name] !== null || !$type->allowsNull())
            ) {
                $typeName = PHP_VERSION_ID >= 70100 ? $type->getName() : (string)$type;
                if ($params[$name] === '' && $type->allowsNull()) {
                    if ($typeName !== 'string') { // for old string behavior compatibility
                        $params[$name] = null;
                    }
                } else {
                    switch ($typeName) {
                        case 'int':
                            $params[$name] = filter_var($params[$name], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                            break;
                        case 'float':
                            $params[$name] = filter_var($params[$name], FILTER_VALIDATE_FLOAT, FILTER_NULL_ON_FAILURE);
                            break;
                        case 'bool':
                            $params[$name] = filter_var($params[$name], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
                            break;
                    }
                    if ($params[$name] === null) {
                        $isValid = false;
                    }
                }
            }
            if (!$isValid) {
                throw new BadRequestHttpException(
                    Yii::t('yii', 'Invalid data received for parameter "{param}".', ['param' => $name])
                );
            }
            $args[] = $actionParams[$name] = $params[$name];
            unset($params[$name]);
        } elseif (
            PHP_VERSION_ID >= 70100
            && ($type = $param->getType()) !== null
            && $type instanceof \ReflectionNamedType
            && !$type->isBuiltin()
        ) {
            try {
                $this->bindInjectedParams($type, $name, $args, $requestedParams);
            } catch (HttpException $e) {
                throw $e;
            } catch (Exception $e) {
                throw new ServerErrorHttpException($e->getMessage(), 0, $e);
            }
        } elseif ($param->isDefaultValueAvailable()) {
            $args[] = $actionParams[$name] = $param->getDefaultValue();
        } else {
            $missing[] = $name;
        }
    }
    if (!empty($missing)) {
        throw new BadRequestHttpException(
            Yii::t('yii', 'Missing required parameters: {params}', ['params' => implode(', ', $missing)])
        );
    }
    $this->actionParams = $actionParams;
    // We use a different array here, specifically one that doesn't contain service instances but descriptions instead.
    if (Yii::$app->requestedParams === null) {
        Yii::$app->requestedParams = array_merge($actionParams, $requestedParams);
    }
    return $args;
}

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

定義位置: yii\base\Controller::bindInjectedParams()

アクションメソッドのシグネチャにある型と名前に基づいてパラメータを設定します。

protected void bindInjectedParams ( ReflectionType $type, $name, &$args, &$requestedParams )
$type ReflectionType

アクションパラメータのリフレクション型。

$name string

パラメータの名前。

$args array

アクションの引数の配列。この関数は、要素を追加する場合があります。

$requestedParams array

リクエストされたパラメータの配列。この関数は、特定のキーを書き込む場合があります。

例外 yii\base\ErrorException

必要なサービスを読み込めなかった場合。

例外 yii\base\InvalidConfigException

DI設定にエラーがある場合にスローされます。

例外 yii\di\NotInstantiableException

定義をコンテナ内の適切な定義なしに具体的なクラス(例:インターフェース型ヒント)に解決できない場合にスローされます。

                final protected function bindInjectedParams(\ReflectionType $type, $name, &$args, &$requestedParams)
{
    // Since it is not a builtin type it must be DI injection.
    $typeName = $type->getName();
    if (($component = $this->module->get($name, false)) instanceof $typeName) {
        $args[] = $component;
        $requestedParams[$name] = 'Component: ' . get_class($component) . " \$$name";
    } elseif ($this->module->has($typeName) && ($service = $this->module->get($typeName)) instanceof $typeName) {
        $args[] = $service;
        $requestedParams[$name] = 'Module ' . get_class($this->module) . " DI: $typeName \$$name";
    } elseif (\Yii::$container->has($typeName) && ($service = \Yii::$container->get($typeName)) instanceof $typeName) {
        $args[] = $service;
        $requestedParams[$name] = "Container DI: $typeName \$$name";
    } elseif ($type->allowsNull()) {
        $args[] = null;
        $requestedParams[$name] = "Unavailable service: $name";
    } else {
        throw new Exception('Could not load required service: ' . $name);
    }
}

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

            
createAction() publicメソッド

定義されている場所: yii\base\Controller::createAction()

指定されたアクションIDに基づいてアクションを作成します。

このメソッドはまず、アクションIDがactions()で宣言されているかどうかをチェックします。もし宣言されていれば、そこで宣言された設定を使用してアクションオブジェクトを作成します。そうでなければ、xyzがアクションIDであるactionXyz形式の名前を持つコントローラーメソッドを探します。見つかった場合、そのメソッドを表すyii\base\InlineActionが作成され、返されます。

public yii\base\Action|null createAction ( $id )
$id string

アクションID。

戻り値 yii\base\Action|null

新しく作成されたアクションインスタンス。IDがアクションに解決されない場合はNull。

                public function createAction($id)
{
    if ($id === '') {
        $id = $this->defaultAction;
    }
    $actionMap = $this->actions();
    if (isset($actionMap[$id])) {
        return Yii::createObject($actionMap[$id], [$id, $this]);
    }
    if (preg_match('/^(?:[a-z0-9_]+-)*[a-z0-9_]+$/', $id)) {
        $methodName = 'action' . str_replace(' ', '', ucwords(str_replace('-', ' ', $id)));
        if (method_exists($this, $methodName)) {
            $method = new \ReflectionMethod($this, $methodName);
            if ($method->isPublic() && $method->getName() === $methodName) {
                return new InlineAction($id, $this, $methodName);
            }
        }
    }
    return null;
}

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

            
findLayoutFile() publicメソッド

定義されている場所: yii\base\Controller::findLayoutFile()

適用可能なレイアウトファイルを見つけます。

public string|boolean findLayoutFile ( $view )
$view yii\base\View

レイアウトファイルを描画するビューオブジェクト。

戻り値 string|boolean

レイアウトファイルのパス、またはレイアウトが不要な場合はfalse。render()でこのパラメータの指定方法を参照してください。

例外 yii\base\InvalidArgumentException

無効なパスエイリアスを使用してレイアウトを指定した場合。

                public function findLayoutFile($view)
{
    $module = $this->module;
    $layout = null;
    if (is_string($this->layout)) {
        $layout = $this->layout;
    } elseif ($this->layout === null) {
        while ($module !== null && $module->layout === null) {
            $module = $module->module;
        }
        if ($module !== null && is_string($module->layout)) {
            $layout = $module->layout;
        }
    }
    if ($layout === null) {
        return false;
    }
    if (strncmp($layout, '@', 1) === 0) {
        $file = Yii::getAlias($layout);
    } elseif (strncmp($layout, '/', 1) === 0) {
        $file = Yii::$app->getLayoutPath() . DIRECTORY_SEPARATOR . substr($layout, 1);
    } else {
        $file = $module->getLayoutPath() . DIRECTORY_SEPARATOR . $layout;
    }
    if (pathinfo($file, PATHINFO_EXTENSION) !== '') {
        return $file;
    }
    $path = $file . '.' . $view->defaultExtension;
    if ($view->defaultExtension !== 'php' && !is_file($path)) {
        $path = $file . '.php';
    }
    return $path;
}

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

            
getModules() publicメソッド

定義位置: yii\base\Controller::getModules()

このコントローラーのすべての祖先モジュールを返します。

配列内の最初のモジュールが最上位のもので(つまり、アプリケーションインスタンス)、最後は最下位のものである。

public yii\base\Module[] getModules ( )
戻り値 yii\base\Module[]

このコントローラーが含まれるすべての祖先モジュール。

                public function getModules()
{
    $modules = [$this->module];
    $module = $this->module;
    while ($module->module !== null) {
        array_unshift($modules, $module->module);
        $module = $module->module;
    }
    return $modules;
}

            
getRoute() publicメソッド

定義位置: yii\base\Controller::getRoute()

現在のリクエストのルートを返します。

public string getRoute ( )
戻り値 string

現在のリクエストのルート(モジュールID、コントローラーID、アクションID)。

                public function getRoute()
{
    return $this->action !== null ? $this->action->getUniqueId() : $this->getUniqueId();
}

            
getUniqueId() publicメソッド

定義位置: yii\base\Controller::getUniqueId()

コントローラーの一意のIDを返します。

public string getUniqueId ( )
戻り値 string

モジュールID(存在する場合)をプレフィックスとして付けたコントローラーID。

                public function getUniqueId()
{
    return $this->module instanceof Application ? $this->id : $this->module->getUniqueId() . '/' . $this->id;
}

            
getView() publicメソッド

定義位置: yii\base\Controller::getView()

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

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

public yii\base\View|yii\web\View getView ( )
戻り値 yii\base\View|yii\web\View

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

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

            
getViewPath() publicメソッド

定義位置: yii\base\Controller::getViewPath()

このコントローラーのビューファイルを含むディレクトリを返します。

デフォルトの実装では、コントローラの$idという名前のディレクトリが$module$viewPathディレクトリの下に返されます。

public string getViewPath ( )
戻り値 string

このコントローラーのビューファイルを含むディレクトリ。

                public function getViewPath()
{
    if ($this->_viewPath === null) {
        $this->_viewPath = $this->module->getViewPath() . DIRECTORY_SEPARATOR . $this->id;
    }
    return $this->_viewPath;
}

            
goBack() publicメソッド

ブラウザーを最後にアクセスしたページにリダイレクトします。

このメソッドは、アクション内でyii\web\Responseを直接返すことで使用できます。

// stop executing this action and redirect to last visited page
return $this->goBack();

この関数が動作するには、事前に適切な場所でreturn URLを設定する必要があります。

yii\web\User::getReturnUrl()も参照してください。

public yii\web\Response goBack ( $defaultUrl null )
$defaultUrl string|array|null

以前に設定されていない場合のデフォルトの戻り値URL。これがnullで、以前にreturn URLが設定されていない場合、yii\web\Application::$homeUrlにリダイレクトされます。URLの許容形式については、yii\web\User::setReturnUrl()を参照してください。

戻り値 yii\web\Response

現在のレスポンスオブジェクト

                public function goBack($defaultUrl = null)
{
    return $this->response->redirect(Yii::$app->getUser()->getReturnUrl($defaultUrl));
}

            
goHome() publicメソッド

ブラウザーをホームページにリダイレクトします。

このメソッドは、アクション内でyii\web\Responseを直接返すことで使用できます。

// stop executing this action and redirect to home page
return $this->goHome();
public yii\web\Response goHome ( )
戻り値 yii\web\Response

現在のレスポンスオブジェクト

                public function goHome()
{
    return $this->response->redirect(Yii::$app->getHomeUrl());
}

            
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メソッド (バージョン2.0.36から利用可能)

定義位置: yii\base\Controller::init()

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

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

public void init ( )

                public function init()
{
    parent::init();
    $this->request = Instance::ensure($this->request, Request::className());
    $this->response = Instance::ensure($this->response, Response::className());
}

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

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

            
redirect() publicメソッド

ブラウザーを指定されたURLにリダイレクトします。

このメソッドは、yii\web\Response::redirect() のショートカットです。

アクション内で、yii\web\Response を直接返すことで使用できます。

// stop executing this action and redirect to login page
return $this->redirect(['login']);
public yii\web\Response redirect ( $url, $statusCode 302 )
$url string|array

リダイレクト先のURL。以下のいずれかの形式で指定できます。

  • URLを表す文字列(例: "https://example.com")
  • URLエイリアスを表す文字列(例: "@example.com")
  • [$route, ...name-value pairs...] の形式の配列(例: ['site/index', 'ref' => 1]yii\helpers\Url::to() は、配列をURLに変換するために使用されます。

先頭にスラッシュ "/" が1つだけの相対URLは、現在のリクエストのホスト情報が付加されて絶対URLに変換されます。

$statusCode integer

HTTPステータスコード。デフォルトは302。HTTPステータスコードの詳細については、https://tools.ietf.org/html/rfc2616#section-10 を参照してください。

戻り値 yii\web\Response

現在のレスポンスオブジェクト

                public function redirect($url, $statusCode = 302)
{
    // calling Url::to() here because Response::redirect() modifies route before calling Url::to()
    return $this->response->redirect(Url::to($url), $statusCode);
}

            
refresh() publicメソッド

現在のページを更新します。

このメソッドは、yii\web\Response::refresh() のショートカットです。

アクション内で、yii\web\Response を直接返すことで使用できます。

// stop executing this action and refresh the current page
return $this->refresh();
public yii\web\Response refresh ( $anchor '' )
$anchor string

リダイレクトURLに追加するアンカー。デフォルトは空。指定する場合は、アンカーが「#」で始まることを確認してください。

戻り値 yii\web\Response

レスポンスオブジェクト自体

                public function refresh($anchor = '')
{
    return $this->response->redirect($this->request->getUrl() . $anchor);
}

            
render() publicメソッド

定義位置: yii\base\Controller::render()

ビューをレンダリングし、レイアウトが利用可能な場合は適用します。

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

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

適用するレイアウトを決定するには、次の2つのステップを実行します。

  1. 最初のステップでは、レイアウト名とコンテキストモジュールを決定します。
  • $layout が文字列として指定されている場合、レイアウト名として使用し、$module をコンテキストモジュールとして使用します。
  • $layout がnullの場合、このコントローラのすべての祖先モジュールを検索し、layout がnullでない最初のモジュールを見つけます。レイアウトと対応するモジュールは、それぞれレイアウト名とコンテキストモジュールとして使用されます。そのようなモジュールが見つからない場合、または対応するレイアウトが文字列でない場合、falseが返され、適用可能なレイアウトがないことを意味します。
  1. 2番目のステップでは、前に見つけたレイアウト名とコンテキストモジュールに従って、実際のレイアウトファイルを決定します。レイアウト名は次のとおりです。
  • パスエイリアス(例: "@app/views/layouts/main");
  • 絶対パス(例: "/main"):レイアウト名がスラッシュで始まります。実際のレイアウトファイルは、アプリケーションの レイアウトパス で検索されます。
  • 相対パス(例: "main"):実際のレイアウトファイルは、コンテキストモジュールの レイアウトパス で検索されます。

レイアウト名にファイル拡張子が含まれていない場合、デフォルトの拡張子「.php」が使用されます。

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

ビュー名。

$params array

ビューで使用可能にするパラメータ(名前と値のペア)。これらのパラメータはレイアウトでは使用できません。

戻り値 string

レンダリング結果。

例外 yii\base\InvalidArgumentException

ビューファイルまたはレイアウトファイルが存在しない場合。

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

            
renderAjax() publicメソッド

AJAXリクエストに応答してビューをレンダリングします。

このメソッドは、renderPartial() と似ていますが、ビューに登録されているJS/CSSスクリプトとファイルをレンダリング結果に挿入する点が異なります。このため、AJAXリクエストに応答するビューをレンダリングするには、renderPartial() の代わりにこのメソッドを使用する必要があります。

public string renderAjax ( $view, $params = [] )
$view string

ビュー名。ビュー名の指定方法については、render() を参照してください。

$params array

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

戻り値 string

レンダリング結果。

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

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

定義位置: yii\base\Controller::renderContent()

レイアウトを適用して静的文字列をレンダリングします。

public string renderContent ( $content )
$content string

レンダリングされる静的な文字列

戻り値 string

指定された静的な文字列を$content変数として持つレイアウトのレンダリング結果。レイアウトが無効になっている場合、文字列がそのまま返されます。

                public function renderContent($content)
{
    $layoutFile = $this->findLayoutFile($this->getView());
    if ($layoutFile !== false) {
        return $this->getView()->renderFile($layoutFile, ['content' => $content], $this);
    }
    return $content;
}

            
renderFile() publicメソッド

定義位置: yii\base\Controller::renderFile()

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

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

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

$params array

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

戻り値 string

レンダリング結果。

例外 yii\base\InvalidArgumentException

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

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

            
renderPartial() publicメソッド

定義済み: yii\base\Controller::renderPartial()

レイアウトを適用せずにビューをレンダリングします。

このメソッドは、レイアウトを適用しない点でrender()とは異なります。

public string renderPartial ( $view, $params = [] )
$view string

ビュー名。ビュー名の指定方法については、render() を参照してください。

$params array

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

戻り値 string

レンダリング結果。

例外 yii\base\InvalidArgumentException

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

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

            
run() publicメソッド

定義済み: yii\base\Controller::run()

ルートで指定されたリクエストを実行します。

ルートは、このコントローラー内のアクションのID、またはモジュールID、コントローラーID、アクションIDで構成される完全なルートのいずれかです。ルートがスラッシュ '/' で始まる場合、ルートの解析はこのアプリケーションから開始されます。それ以外の場合は、このコントローラーの親モジュールから開始されます。

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

public mixed run ( $route, $params = [] )
$route string

処理するルート(例:'view'、'comment/view'、'/admin/comment/view')。

$params array

アクションに渡すパラメーター。

戻り値 mixed

アクションの結果。

                public function run($route, $params = [])
{
    $pos = strpos($route, '/');
    if ($pos === false) {
        return $this->runAction($route, $params);
    } elseif ($pos > 0) {
        return $this->module->runAction($route, $params);
    }
    return Yii::$app->runAction(ltrim($route, '/'), $params);
}

            
runAction() publicメソッド

定義済み: yii\base\Controller::runAction()

指定されたアクションIDとパラメーターを使用して、このコントローラー内でアクションを実行します。

アクションIDが空の場合、このメソッドは$defaultActionを使用します。

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

public mixed runAction ( $id, $params = [] )
$id string

実行するアクションのID。

$params array

アクションに渡すパラメーター(名前と値のペア)。

戻り値 mixed

アクションの結果。

例外 yii\base\InvalidRouteException

要求されたアクションIDをアクションに正常に解決できない場合。

                public function runAction($id, $params = [])
{
    $action = $this->createAction($id);
    if ($action === null) {
        throw new InvalidRouteException('Unable to resolve the request: ' . $this->getUniqueId() . '/' . $id);
    }
    Yii::debug('Route to run: ' . $action->getUniqueId(), __METHOD__);
    if (Yii::$app->requestedAction === null) {
        Yii::$app->requestedAction = $action;
    }
    $oldAction = $this->action;
    $this->action = $action;
    $modules = [];
    $runAction = true;
    // call beforeAction on modules
    foreach ($this->getModules() as $module) {
        if ($module->beforeAction($action)) {
            array_unshift($modules, $module);
        } else {
            $runAction = false;
            break;
        }
    }
    $result = null;
    if ($runAction && $this->beforeAction($action)) {
        // run the action
        $result = $action->runWithParams($params);
        $result = $this->afterAction($action, $result);
        // call afterAction on modules
        foreach ($modules as $module) {
            /* @var $module Module */
            $result = $module->afterAction($action, $result);
        }
    }
    if ($oldAction !== null) {
        $this->action = $oldAction;
    }
    return $result;
}

            
setView() publicメソッド

定義済み: yii\base\Controller::setView()

このコントローラーで使用されるビューオブジェクトを設定します。

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

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

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

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

定義済み: yii\base\Controller::setViewPath()

ビューファイルを含むディレクトリを設定します。

public void setViewPath ( $path )
$path string

ビューファイルのルートディレクトリ。

例外 yii\base\InvalidArgumentException

ディレクトリが無効な場合

                public function setViewPath($path)
{
    $this->_viewPath = Yii::getAlias($path);
}

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