1

PHPセッション変数をチェックし、設定されていない場合は特定の場所にリダイレクトする単純なCakePHPコンポーネントを作成しようとしています。この関数は複数のコントローラーで使用される予定であり、コードを 1 か所 (DRY およびすべて) に配置したいだけです。

私が直面している問題は、 Cake がController関数をコンポーネントにアクセス可能にしないため、 を呼び出すことができないこと$this->redirect([routing array])です。

これを回避する方法はありますか?コントローラーでチェックインする必要がある関数に return ステートメントを追加しないことをお勧めします。これは、関数が既に行っているすべて (1 行の if ステートメント) であり、抽象化の不要なレイヤーのように思われるためです。関数をケーキの外の別のファイルに入れようとしており include、この関数を必要とするすべてのコントローラーに、これをハックする方法として追加するだけです。

4

1 に答える 1

2

コンポーネント APIを確認してください

2 つのコールバックが表示されます

Component::initialize(Controller $controller)

initialize メソッドは、コントローラーの beforeFilter メソッドの前に呼び出されます。

Component::startup(Controller $controller)

startup メソッドは、コントローラーの beforeFilter メソッドの後、コントローラーが現在のアクション ハンドラーを実行する前に呼び出されます。

したがって、必要に応じて initialize(Controller $controller) または startup(Controller $controller) を使用できます ( initialize を使用する必要があるようです)

次の方法で

    function initialize(Controller $controller ) {
        $this->controller = $controller;
    }

コード内の以降のユーザー。CakePHP は現在のコントローラを $controller の値として送信します

于 2013-06-26T15:36:36.240 に答える