我有一個被許多控制器使用的組件,我想知道是否有方法從組件訪問控制器對象,而不必將其傳遞到組件。組件中的CakePHP 2.6訪問控制器對象
比如我目前正在傳遞一個參考控制器到MyAuthComponent:
$this->Auth->isAuthenticated($this);
但是,我寧願可以調用此不必如果可能,通過引用。這可能嗎?
我有一個被許多控制器使用的組件,我想知道是否有方法從組件訪問控制器對象,而不必將其傳遞到組件。組件中的CakePHP 2.6訪問控制器對象
比如我目前正在傳遞一個參考控制器到MyAuthComponent:
$this->Auth->isAuthenticated($this);
但是,我寧願可以調用此不必如果可能,通過引用。這可能嗎?
組件回調接收控制器實例作爲參數。因此,使用組件的startup()
回調保存對組件屬性的引用,然後可以在組件的其他方法中使用該引用。檢查手冊/ api獲取參數startup()
接收的列表。
這裏是代碼例如用於@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();