3.6.2.1 Classe d'accès MVC dans les Composants

Pour avoir accès à l’instance du contrôleur depuis votre composant nouvellement créé, vous devrez implémenter la méthode startup(). Cette méthode spéciale reçoit une référence vers le contrôleur comme premier paramètre et est automatiquement appelée après la méthode beforeFilter() du contrôleur. Si pour une raison quelconque vous ne voulez pas que la méthode startup() soit appelée lorsque le contrôleur met tout en place, fixez la variable de classe $disableStartup à true.

Si vous voulez insérer un peu de logique avant qu’une méthode "before" du contrôleur n’ait été appelée, utilisez la méthode initialize() du composant.

<?php

class MathComponent extends Object {
    //appelée avant Controller:beforeFilter()
    function initialize() {

    }

    //appelée après Controller::beforeFilter()
    function startup(&$controller) {

    }

    function faitUneOperationComplexe($montant1, $montant2) {
        return $montant1 + $montant2;
    }

}

?>
  1. <?php
  2. class MathComponent extends Object {
  3. //appelée avant Controller:beforeFilter()
  4. function initialize() {
  5. }
  6. //appelée après Controller::beforeFilter()
  7. function startup(&$controller) {
  8. }
  9. function faitUneOperationComplexe($montant1, $montant2) {
  10. return $montant1 + $montant2;
  11. }
  12. }
  13. ?>

Vous pourriez également vouloir utiliser d’autres composants à l’intérieur d’un composant personnalisé. Pour ce faire, créez simplement une variable de classe $components (comme vous l’auriez fait dans un contrôleur) sous forme d'un tableau contenant les noms des componsants que vous souhaitez utiliser.