2013-05-20 2 views
1

J'utilise Cakephp 2.3.0, en chargeant le composant suivant.

class BreadCrumbsComponent extends Component { 

public $components = array(); 
public $controller = null; 

public function initialize($controller) { 

} 

public function startup($controller) { 
    $this->controller = $controller; 
} 

public function beforeRender($controller) { 

} 

public function shutDown($controller) { 

} 

public function beforeRedirect($controller, $url, $status = null, $exit = true) { 

} 

public function handle($controllerName = NULL, $actionName = NULL) { 
    pr($this->controller->modelClass); 
} 

}

Obtenir erreur suivant erreur

Trying to get property of non-object [APP\Controller\Component\BreadCrumbsComponent.php, line 38] 

Je ne peux pas accéder à $ this-> contrôleur là. N'importe quelle raison? Comment puis-je le faire fonctionner?

+0

Avez-vous vérifié que le démarrage() est déclenchée? Cela devrait être le cas si vous avez initié correctement votre composant comme l'explique la documentation. Donc, puisque c'est probablement le problème, vous devriez également afficher le code du contrôleur concerné ici. – mark

+1

Essayez d'initialiser votre contrôleur dans la méthode 'initialize'. – Rikesh

+0

@mark oui démarrage() fonctionne –

Répondre

4

Lire here méthode démarrage est appelé après que le contrôleur si besoin d'initialiser le contrôleur dans méthode initialize comme ci-dessous,

public function initialize(&$controller, $settings = array()) { 
    $this->controller = $controller; 
} 
+1

startup() fonctionne aussi généralement - SI la méthode handle() n'est pas utilisée dans les méthodes beforeFilter, mais dans les actions elle-même. Il semble que ce n'est pas le cas ici. donc votre solution est la meilleure :) – mark

+0

@mark - ouais vous avez raison. – Rikesh

Questions connexes