4

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

CakeRequest 是 CakePHP 中使用的默认请求对象。它集中了许多用于查询和与请求数据交互的功能。在每个请求上,都会创建一个 CakeRequest,然后通过引用传递给使用请求数据的应用程序的各个层。默认情况下,CakeRequest 被分配给 $this->request,并且在 Controller、Views 和 Helpers 中可用。您还可以使用控制器引用在组件中访问它。

控制器引用意味着什么?我尝试了以下。有用。
但是如何在不将参数this传递给组件的情况下到达 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 回答