Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组件中的CakePHP 2.6访问控制器对象_Cakephp_Cakephp 2.0_Cakephp 2.6 - Fatal编程技术网

组件中的CakePHP 2.6访问控制器对象

组件中的CakePHP 2.6访问控制器对象,cakephp,cakephp-2.0,cakephp-2.6,Cakephp,Cakephp 2.0,Cakephp 2.6,我有一个被许多控制器使用的组件,我想知道是否有一种方法可以从该组件访问控制器对象,而不必将其传递到该组件中 例如,我当前正在将对控制器的引用传递到MyAuthComponent中: $this->Auth->isAuthenticated($this); 但是,如果可能的话,我希望能够调用它而不必传递引用。这可能吗?组件回调将控制器实例作为参数接收。因此,使用组件的startup()回调保存对组件属性的引用,然后可以在组件的其他方法中使用该引用。查看手册/api中的参数列表star

我有一个被许多控制器使用的组件,我想知道是否有一种方法可以从该组件访问控制器对象,而不必将其传递到该组件中

例如,我当前正在将对控制器的引用传递到MyAuthComponent中:

$this->Auth->isAuthenticated($this);

但是,如果可能的话,我希望能够调用它而不必传递引用。这可能吗?

组件回调将控制器实例作为参数接收。因此,使用组件的
startup()
回调保存对组件属性的引用,然后可以在组件的其他方法中使用该引用。查看手册/api中的参数列表
startup()
receives

组件回调将控制器实例作为参数接收。因此,使用组件的
startup()
回调保存对组件属性的引用,然后可以在组件的其他方法中使用该引用。查看手册/api中的参数列表
startup()
receives

下面是@ADmad answere的代码示例

class AuthComponent extends Component {    
    var $controller = null;
         /**
         * Startup component
         *
         * @param object $controller Instantiating controller
         * @access public
         */ 
        public function startup(Controller $controller) {        
            $this->controller = $controller;
        }
}

下面是@ADmad answere的代码示例

class AuthComponent extends Component {    
    var $controller = null;
         /**
         * Startup component
         *
         * @param object $controller Instantiating controller
         * @access public
         */ 
        public function startup(Controller $controller) {        
            $this->controller = $controller;
        }
}

根据cakephp3.x使用注册表的指南,您可以从组件内访问当前控制器

$controller = $this->_registry->getController();
您可以使用下面提到的事件对象在任何组件回调方法中访问控制器

$controller = $event->getSubject();

根据cakephp3.x使用注册表的指南,您可以从组件内访问当前控制器

$controller = $this->_registry->getController();
您可以使用下面提到的事件对象在任何组件回调方法中访问控制器

$controller = $event->getSubject();