コンポーネント

主なコンポーネントの種類

CakePHP3で用意されている主なコンポーネントを記載します。

  • 認証(AuthComponent)
  • クッキー(CookieComponent)
  • クロスサイトリクエストフォージェリ(CsrfComponent)
  • フラッシュ(FlashComponent)
  • セキュリティ(SecurityComponent)
  • ページ制御((PaginatorComponent)
  • リクエストハンドリング(RequestHandlerComponent)

コンポーネントとコントローラのメソッドの実行順序

コンポーネントとコントローラのメソッドの実行順序は、以下のようになります。

Controllerのinitialize()

ComponentのbeforeFilter()

ControllerのbeforeFilter()

Componentのstartup()

Controllerのaction

ComponentのbeforeRender()

ControllerのbeforeRender()

Componentのshutdown()

ControllerのafterFilter()

Componentから呼び出し元のControllerのオブジェクトを取得する

Componentから呼び出し元のControllerのオブジェクトを取得するには、getController()メソッドで取得することが可能です。

$this->controller = $this->_registry->getController();

コンポーネントのロード時に引数を渡す

コンポーネントのロード時に引数を渡す場合は、第二引数に配列で指定します。
以下では、TestComponentをロードする際を例にしています。

 

呼び出し元

コンポーネントをフィールドで宣言している場合

public $components = [
    'Test' => [
        'message' => 'コンポーネントに渡す引数です。',
        'today'   => '2017-06-01'
    ],
];

loadComponentを使っている場合

$this->Test = $this->loadComponent(
    'Test',
    [
        'message' => 'コンポーネントに渡す引数です。',
        'today'   => '2017-06-01'
    ]
);

自分でインスタンス化する場合

$this->Test = new TestComponent(
    new ComponentRegistry(), 
    [
        'message' => 'コンポーネントに渡す引数です。',
        'today'   => '2017-06-01'
    ]
);

 

コンポーネント側

コンポーネント側で引数を受け取る場合は、initialize()で受け取ることができます。

    public function initialize(array $config) {
        var_dump($config);
    }

■引数の中身
array(2) { ["message"]=> string(45) "コンポーネントに渡す引数です。" ["today"]=> string(10) "2017-06-01" }

------------------------------
作成日:2016年07月09日
更新日:2018年01月27日
------------------------------

ページの先頭へ