组件中的CakePHP 2.6访问控制器对象
我有一个被许多控制器使用的组件,我想知道是否有一种方法可以从该组件访问控制器对象,而不必将其传递到该组件中 例如,我当前正在将对控制器的引用传递到MyAuthComponent中:组件中的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
$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();