LoginSignup
17
18

More than 5 years have passed since last update.

CakePHP2自作コンポーネントで覚えておきたいこと

Posted at

コンポーネント内で他のコンポーネントが使える

app/Controller/Component/HogeComponent.php
<?php
App::uses('Component', 'Controller');
class HogeComponent extends Component {
    public $components = array('Auth');
    public function fuga() {
        return $this->Auth->user();
    }
}

コンポーネントでコールバック関数

コンポーネント内で以下の関数を指定してあれば、当該コンポーネントを読み込んだコントローラー内で勝手に呼ばれる。

順番としては

initialize -> startup -> beforeRender -> shutdown

app/Controller/Component/HogeComponent.php

    public function initialize(Controller $controller) {
        // コントローラのbeforeFilterの前に呼ばれる
    }

    public function startup(Controller $controller) {
        // コントローラのbeforeFilterの直後に呼ばれる
    }

    public function beforeRender(Controller $controller) {
        // コントローラが要求されたアクションのロジックを実行した後、ビューのレンダリング前に呼ばれる
    }

    public function shutdown(Controller $controller) {
        // 出力結果がブラウザに送信される前に呼び出される
    }

    public function beforeRedirect(Controller $controller, $url, $status, $exit=true) {
        //コントローラのredirectメソッドが呼び出されるタイミングで、他のアクションより先に呼び出される
        //このメソッドがfalse を返す時、コントローラはリダイレクトを中断する
    }

※ただし、コンポーネント内でコンポーネントを読み込んだ場合はこれらのコンポーネントは呼ばれない。

17
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
18