4

カスタムコンポーネントからCakeRequestオブジェクトにアクセスしようとしています。しかし、私はできません。クックブックの中で私はこれを見つけました:

CakeRequestは、CakePHPで使用されるデフォルトのリクエストオブジェクトです。これは、要求データを照会および操作するための多くの機能を一元化します。リクエストごとに1つのCakeRequestが作成され、リクエストデータを使用するアプリケーションのさまざまなレイヤーへの参照によって渡されます。デフォルトでは、CakeRequestは$ this-> requestに割り当てられており、Controller、Views、およびHelpersで使用できます。コントローラリファレンスを使用して、コンポーネントでアクセスすることもできます。

コントローラリファレンスとはどういう意味ですか?以下を試してみました。できます。しかし、これをコンポーネント
に引数を渡さずにCakeRequestに到達するにはどうすればよいですか?

// MyController.php
    public function foo(){
        $this->MyUtil->bar($this);
    }

// MyUtilComponent.php
    function bar(&$controller) {
        $a=$controller->request;
        print_r($a);
    }
4

1 に答える 1

6

CakePHPコンポーネントにはinitialize、コントローラーへの参照を保存するために使用できるコールバックがあります。これをComponentクラスに追加します。

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

次にbar、次のようになります。

function bar() {
    $a = $this->controller->request;
    print_r($a);
}
于 2012-12-21T20:55:02.477 に答える