4.5.5 getContextController
La méthode getContextController
permet d'ajouter des variables personnalisées
au contrôleur de modèles. Le contrôleur de modèles parse les templates côté serveur
avant de les envoyer au client.
Elle doit retourner une classe Dcp\Ui\DocumentTemplateContext
qui implémente ArrayAccess
.
L'ajout de nouvelles variables se fait donc en précisant la clef comme index du tableau :
$templateContext[$key] = $value
La valeur peut revêtir trois formes :
- Une valeur scalaire pour renseigner une clef simple
- Un tableau pour renseigner une liste de clef (répétable)
-
Une fonction qui retourne soit une valeur scalaire soit un tableau de valeur
Cette fonction n'est exécutée que si la clé correspondante est présente dans le modèle, au moment du remplacement.
Les variables définies sont disponibles pour tous les modèles du document.
Exemple :
class RenderConfigCustom extends \Dcp\Ui\DefaultView { public function getContextController(\Doc $document) { $controller = parent::getContextController($document); $controller["myController"] = $document->getFamilyParameterValue("myController"); $controller["myValues"] = [ ["myList"=>"Un"], ["myList"=>"Deux"] ]; $controller["myDefinition"] = function () use ($document) { return $document->getMyComplexDefinition(); }; return $controller; } public function getTemplates(\Doc $document = null) { $templates=parent::getTemplates($document); $templates["sections"]["footer"]["file"]="MY/customFoot.mustache"; return $templates; } }
Fichier : MY/customFoot.mustache
:
<footer class="dcpDocument__footer"> <strong>[[myController]]</strong> <ol> [[#myValues]] <li>[[myList]]</li> [[/myValues]] </ol> <p>[[myDefinition]]</p> </footer>
4.5.5.1 Controleur par défaut par défaut
les classes de configuration de rendu par défaut
utilisent le contrôleur Dcp\Ui\DocumentTemplateContext
.
Ce contrôleur donne accès aux variables suivantes :
4.5.5.1.1 Propriétés
Clef | Définition |
---|---|
[[document.properties.id]] |
Identifiant du document |
[[document.properties.initid]] |
Identifiant de la lignée documentaire |
[[document.properties.title]] |
Titre du document |
[[document.properties.icon]] |
Url de l'icône du document |
[[document.properties.revision]] |
Numéro de révision |
[[document.properties.revdate]] |
Date de révision (YYYY-MM-DD HH:MM) |
[[document.properties.status]] |
Status du document : alive , deleted , fixed
|
[[document.properties.family.id]] |
Identifiant de la famille |
[[document.properties.family.title]] |
Titre de la famille |
[[document.properties.family.name]] |
Nom logique de la famille |
[[document.properties.family.icon]] |
Url de l'icône de la famille |
4.5.5.1.2 Attributs
Clef | Définition |
---|---|
[[document.attribute.<attrid>.label]] |
Libellé de l'attribut |
[[document.attribute.<attrid>.attributeValue.value]] |
Valeur brute |
[[document.attribute.<attrid>.attributeValue.displayValue]] |
valeur affichable |
[[document.attribute.<attrid>.attributeValue.<specialProperty>]] |
Autres propriétés (Voir formatCollection) |
4.5.5.1.3 Fonctions
Clef | Définition |
---|---|
[[i18n]] |
Fonction de traduction |
4.5.5.1.3.1 Traduction
Le contrôleur traduit les textes indiqués entre les balises i18n
. Le texte traduit doit être
fourni par le catalogue de langue du module.
Exemple :
<h1>[[#i18n]]my::Hello world[[/i18n]]</h1>
La clef my::Hello world
doit être une entrée traduite du catalogue.
Il est recommandé d'utiliser un préfixe pour chaque traduction afin de ne pas être en conflit avec d'autres traductions.
L'extraction des clefs de traduction
peut être réalisée avec le programme
xgettextMustache
disponible dans les outils de build.
4.5.5.1.4 Exemples
Modification du pied de page pour afficher une valeur.
class MyRenderConfigCustom extends \Dcp\Ui\DefaultView { public function getTemplates(\Doc $document = null) { $templates=parent::getTemplates($document); $templates["sections"]["footer"]["file"]="MY/customFoot.mustache"; return $templates; } }
Fichier MY/customFoot.mustache
:
<footer class="dcpDocument__footer"> <strong>[[document.attributes.my_information.attributeValue.displayValue]]</strong> </footer>