Question

J'ai deux contrôleurs qui partagent la plupart de leur code (mais qui doivent néanmoins être différents contrôleurs). La solution évidente (du moins pour moi) consiste à créer une classe et à en faire hériter les deux contrôleurs. La chose est ... où le mettre? Maintenant, je l'ai dans app_controller.php, mais c'est un peu compliqué là.

Était-ce utile?

La solution

Dans cake, les composants sont utilisés pour stocker une logique pouvant être utilisée par plusieurs contrôleurs. Le répertoire est / app / controllers / components. Par exemple, si vous disposiez d'une logique utilitaire partageable, vous auriez un objet appelé UtilComponent et un fichier dans / app / controlers / components appelé UtilComponent.php.

<?php
class UtilComponent extends Object {
    function yourMethod($param) {
        // logic here.......

        return $param;
    }
}
?>

Ensuite, dans vos classes de contrôleur, vous ajouteriez:

var $components = array('Util');

Ensuite, vous appelez les méthodes telles que:

$this->Util->yourMethod($yourparam);

Plus d'infos:

Documentation

Autres conseils

Btw, si le motif de "Ils doivent être des contrôleurs séparés" est l'URL dont vous avez besoin. N'oubliez pas que vous pouvez utiliser le routage:

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top