Réflex ” Modèles, partie 1

Je viens tout juste de lire cet opinion à propos des modèles qui explique pourquoi la grande majorité des engins de modèles n’ont pas vraiment leur raison d’être. Et j’ai donc pensé que ce serait une bonne occasion de parler un peu plus des modèles dans Réflex.

Je ne penses pas pouvoir mettre les modèles de Réflex dans la même catégorie que la majorité des autres engins de modèle. Les modèles dans Réflex sont là pour vous aider à écrire moins de code. Et pour faire ça, il faut sortir du paradigme de modèle traditionnel : à la place de récupérer les données puis de les envoyer au modèle, c’est l’engin de modèle qui récupère les données en se basant sur ce que le modèle a réellement besoin.

Ça ne rend pas les modèles difficile à utiliser ; il n’y a pas vraiment moyen de voir ce qui se passe quand vous écrivez quelque chose comme ça :

<rx:entry-list>

<h2><rx:entry-title/></h2>

<rx:entry-content/>

</rx:entry-list>

ce qui n’est en réalité qu’une forme plus simple de ceci :

<rx:list source="weblog/entry" as="entry">

<h2><rx:data source="entry/title"/></h2>

<rx:data source="entry/content"/>

</rx:list>

Tout ça ressemble à un modèle standard n’est-ce pas ? Mais basé sur ce modèle, Réflex va exécuter la requête SQL suivante :

SELECT title, content FROM weblog_entry WHERE weblog_id=1

Supposons qu’on ajoute la date de publication à notre modèle :

<rx:entry-list>

<h2><rx:entry-title/></h2>

<rx:entry-content/>

<p>Published on <rx:entry-publication-date/></p>

</rx:entry-list>

La requête va s’adapter d’elle même :

SELECT title, content, published_on FROM weblog_entry WHERE weblog_id=1

Comment est-ce que ça fonctionne ? Le modèle est converti en une forme intermédiaire, qui est en fait un tableau de chaînes de caractères et d’objets « Pane ». Les panes qui sont à l’intérieur d’autre panes peuvent demander des données à leur parent ; les panes qui récupère des données doivent sélectionner les champs demandés par leurs enfants.

Réflex utilise donc les modèles pour deux choses : récupérer les données et afficher les données. Faire ces deux choses ne rend pas le modèle plus compliqué que les autres systèmes de modèle. Mais c’est un subtile changement de paradigme : à la place de simplement dire comment présenter les choses, le modèle est aussi là pour choisir quoi présenter.


Commentaires

Michel Fortin

Quelqu’un a une idée pour traduire « Pane » ?

Rémi

Altavista répond “Carreau” :)

Michel Fortin

Le grand dictionnaire terminologique de l’office québécois de la langue française dans la catégorie informatique me donne le choix entre « sous-fenêtre », « volet » ou « vantail »…

Sous fenêtre serait plutôt mêlant parce que ça n’a rien d’une fenêtre. Vantail est un mot qui me dit rien. Volet serait probablement le mieux des trois vu que c’est un mot qui peux vouloir dire pas mal n’importe quoi selon le contexte, mais je peux pas dire que ça évoque la bonne chose et que ce soit très clair.

Idéalement, je voudrais quelque chose correspondant à peu près la définition suivante (tirée du dictionnaire Oxford inclus dans Mac OS X) :

a separate defined area within a window for the display of, or interaction with, a part of that window’s application or output

Présentement je penche sur « panneau » pour sa ressemblance avec « pane » autant au niveau l’écriture qu’au niveau de la signification.


  • © 2003–2024 Michel Fortin.