Créer un contrôleur
-
Le contrôleur est la partie du modèle MVC qui orchestre la communication entre les différents composants : classes métier, vues, processus.
Contrôleur par défaut
Il existe un contrôleur par défaut pour chaque fonctionnalité standard fournie par le framework. Il n’est donc pas utile de programmer une classe contrôleur que si vous avez d’autres traitements à réaliser.
Comment créer une classe contrôleur
Un contrôleur s’applique toujours dans le contexte d’une classe métier.
Une classe contrôleur peut être créée :- dans le même module que la classe métier. Elle sera nommée
Business_Class_Feature_Controller
ouFeature_Controller
, suivant les cas , oùFeature
est à remplacer par le nom de la fonctionnalité à laquelle correspond le contrôleur,Business_Class
est le nom de votre classe métier, et_Controller
est une partie fixe obligatoire en fin du nom de votre classe. - dans un module de fonctionnalité générique, s’il s’agit d’un contrôleur à appeler par défaut pour toutes les classes métier présentant la fonctionnalité correspondante.
- votre classe devra implémenter Controller, l’interface commune à tous les contrôleurs, et implémenter la méthode
run
qui exécute les traitements nécessaires au traitement demandé par l’utilisateur, et l’affichage des informations à lui envoyer.
Le contrôleur appellera en général la vue qui correspond à la fonctionnalité appelée.
Pour simplifier et limiter le nombre de classes, il peut arriver qu’on prépare les données pour la vue dans le contrôleur, sans faire appel à une vue dédiée. La vue HTML standard permet en effet de transmettre aux templates un objet et des paramètres, suffisants pour la plupart des usages.
Une bonne pratique pour la séparation des logiques suivant le respect du modèle HMVCP consisterait cependant à séparer les vues des contrôleurs :- les contrôleurs doivent faire le lien entre les données reçues depuis les vues, les processus à appeler, et les vues qui affichent les résultats.
- le traitement des données devrait être dans les processus, et pas dans le contrôleur.
- la préparation à la visualisations des données devrait donc être dans la vue, et pas dans le contrôleur.
Exemples
La classe Write_Controller du framework est un exemple type de vue HTML qui traite des données issues d’un formulaire puis lance une vue.
La classe d’écriture peut être surchargée. Par exemple pour la classe métierClient
de l’Application Examples vous pouvez créer une classe contrôleur à tous ces niveaux hiérarchiques de l’application :- itrocks/examples/client/Output_Controller.php
- itrocks/examples/client/output/Output_Controller.php
- itrocks/examples/client/output/Controller.php
- itrocks/examples/Client_Output_Controller.php
- itrocks/examples/client/Controller.php
- itrocks/examples/traits/has_name/Output_Controller.php
- itrocks/examples/traits/has_name/output/Output_Controller.php
- itrocks/examples/traits/has_name/output/Controller.php
- itrocks/examples/traits/Has_Name_Output_Controller.php
- itrocks/examples/traits/has_name/Controller.php
- itrocks/framework/client/Output_Controller.php
- itrocks/framework/client/output/Output_Controller.php
- itrocks/framework/client/output/Controller.php
- itrocks/framework/Client_Output_Controller.php
- itrocks/framework/client/Controller.php
- itrocks/framework/traits/has_name/Output_Controller.php
- itrocks/framework/traits/has_name/output/Output_Controller.php
- itrocks/framework/traits/has_name/output/Controller.php
- itrocks/framework/traits/Has_Name_Output_Controller.php
- itrocks/framework/traits/has_name/Controller.php
- itrocks/framework/output/Controller.php
- itrocks/framework/output/Output_Controller.php
- itrocks/framework/widget/output/Controller.php
- itrocks/framework/widget/output/Output_Controller.php
Vous pouvez obtenir la liste de toutes les classes de contrôleur, de vue, des templates, autorisées, en appelant votre URI en mode débogage instantanné :
/ITRocks/Examples/Client/1/output?D&as_widget
as_wiget
est conseillé pour ne voir la vue que de votre objet métier, et pas celles d’autres objets qui seraient dans toutes les pages votre application.Pour vos propres classes de contrôleurs, prenez exemple sur les contrôleurs créés dans le framework : les scripts *_Controller.php sont autant d’exemples disponibles.
Voir aussi
- dans le même module que la classe métier. Elle sera nommée