我正在尝试从自定义组件中访问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);
}
答案 0 :(得分:5)
CakePHP组件有一个initialize
回调,可用于存储对控制器的引用。将其添加到Component类:
public function initialize(Controller $controller) {
$this->controller = $controller;
}
然后bar
可以是:
function bar() {
$a = $this->controller->request;
print_r($a);
}