Où placer la classe parent du contrôleur dans CakePHP?
-
02-07-2019 - |
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à.
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:
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'));