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 :

  1. Une valeur scalaire pour renseigner une clef simple
  2. Un tableau pour renseigner une liste de clef (répétable)
  3. 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>
×