从CakePHP组件到达CakeRequest对象

时间:2012-12-21 20:06:17

标签: php cakephp cakephp-2.0

我正在尝试从自定义组件中访问CakeRequest对象。但我不能。在cookbook里面我发现了这个:

  

CakeRequest是CakePHP中使用的默认请求对象。它   集中了许多用于询问和交互的功能   与请求数据。在每个请求上创建一个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);
    }

1 个答案:

答案 0 :(得分:5)

CakePHP组件有一个initialize回调,可用于存储对控制器的引用。将其添加到Component类:

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

然后bar可以是:

function bar() {
    $a = $this->controller->request;
    print_r($a);
}