Créer une vue
-
Redirected from Vue
La vue est la partie du modèle MVC avec laquelle l’utilisateur interagit.
Pour résumer, on va trouver ici tout ce qui envoie de l’affichage à l’utilisateur, sous forme de pages HTML ou d’autres formats d’affichage.Vue par défaut
Il existe une vue par défaut pour l’affichage HTML, qui envoie l’objet de contexte et les paramètres envoyés à la vue dans le moteur de templates du framework. Il n’est donc utile de programmer une classe de vue que si vous avez d’autres données à envoyer à votre patron HTML, ou si vous devez formater des données différemment pour d’autres sorties que la vue par défaut.
Comment créer une classe de vue
Une vue s’applique toujours dans le contexte d’une classe métier.
Une classe de vue peut être créée :- dans le même module que la classe métier. Elle sera nommée
Business_Class_Feature_Html_View
ouFeature_Html_View
, suivant les cas , oùFeature
est à remplacer par le nom de la fonctionnalité à laquelle correspond la vue,Business_Class
est le nom de votre classe métier,_Html
précise le moteur de vue employé, obligatoire, et_View
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’une vue à appliquer par défaut à toutes les classes métier présentant la fonctionnalité correspondante.
- votre classe devra implémenter IView, l’interface commune à toutes les vues, et implémenter la méthode
run
qui calcule l’affichage de la vue.
Le contrôleur appellera en général la vue qui correspond à la fonctionalité appelée. Il peut arriver que des variantes de vues soient appelées, elles sont dans ce cas explicitement précisées dans le contrôleur correspondant.
Pour simplifier et limiter le nombre de classes, il peut arriver qu’on prépare les données 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 HTML\Default_View du framework est un exemple type de vue HTML qui prépare les données pour l’envoi au moteur de templates.
Dans l’Application Examples, La classe de vue pour personnaliser la vue de la fonctionnalité standard output d’une classe métierClient
, qui utilise le traitHas_Name
du framework, est utilisée lorsqu’on appelle cette URI :/ITRocks/Examples/Client/1/output
La classe de vue peut être nommée de multiples façons :- itrocks/examples/client/Output_Html_View.php
- itrocks/examples/client/output/Output_Html_View.php
- itrocks/examples/client/output/Html_View.php
- itrocks/examples/Client_Output_Html_View.php
- itrocks/examples/client/Html_View.php
- itrocks/examples/traits/has_name/Output_Html_View.php
- itrocks/examples/traits/has_name/output/Output_Html_View.php
- itrocks/examples/traits/has_name/output/Html_View.php
- itrocks/examples/traits/Has_Name_Output_Html_View.php
- itrocks/examples/traits/has_name/Html_View.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.Classe de vue exemple qui modifie les données de l’objet envoyé au template pour y inclure des spécificités dédiées à l’affichage : ici on affiche le nom du client en majuscules, et on ajoute une citation au formulaire.
<?php namespace ITRocks\Examples\Client; use ITRocks\Examples\Client; use ITRocks\Examples\Programmer\Top_Quotes; use ITRocks\Framework\Builder; use ITRocks\Framework\View\Html\Default_View; /** * Client output HTML view */ class Output_Html_View extends Default_View { /** * @param $parameters array * @param $form array * @param $files array * @param $class_name string * @param $feature_name string * @return mixed */ public function run($parameters, $form, $files, $class_name, $feature_name) { // always output client name uppercase, but it stays stored as it was typed in by the operator // add a random citation to the client name (look at the output template) $client_class = Builder::className(Client::class); if (isset($parameters[$client_class])) { /** @var $client Client */ $client = $parameters[$client_class]; $client->name = strtoupper($client->name); $parameters['quote'] = (new Top_Quotes)->random(); } return parent::run($parameters, $form, $files, $class_name, $feature_name); } }
Voir aussi
- dans le même module que la classe métier. Elle sera nommée