2015-11-10 66 views
0

我有一個被許多控制器使用的組件,我想知道是否有方法從組件訪問控制器對象,而不必將其傳遞到組件。組件中的CakePHP 2.6訪問控制器對象

比如我目前正在傳遞一個參考控制器到MyAuthComponent:

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

但是,我寧願可以調用此不必如果可能,通過引用。這可能嗎?

回答

3

組件回調接收控制器實例作爲參數。因此,使用組件的startup()回調保存對組件屬性的引用,然後可以在組件的其他方法中使用該引用。檢查手冊/ api獲取參數startup()接收的列表。

0

這裏是代碼例如用於@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; 
     } 
} 
0

如每使用註冊表可以從組件中訪問電流控制器cakephp3.x準則。

$controller = $this->_registry->getController(); 

您可以使用下面提到的事件對象在任何組件回調方法中訪問控制器。

$controller = $event->getSubject(); 
相關問題