J'ai deux contrôleurs qui partagent la plupart de leur code (mais doivent néanmoins être différents contrôleurs). La solution évidente (pour moi, au moins) est de créer une classe, et d'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à-bas.Où placer la classe parent du contrôleur dans CakePHP?
4
A
Répondre
9
Dans le gâteau, les composants sont utilisés pour stocker la logique qui peut être utilisée par plusieurs contrôleurs. Le répertoire est/app/controllers/components. Par exemple, si vous aviez une logique d'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 devez ajouter:
var $components = array('Util');
Ensuite, vous appelez les méthodes comme:
$this->Util->yourMethod($yourparam);
Plus d'info:
4
Btw, si la raison 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'));
Non, ce n'est pas vraiment, c'est juste qu'il y a une petite différence dans le code, mais merci quand même :) – paradoja