# getContextController
La méthode getContextController
permet d'ajouter des variables personnalisées au contrôleur de modèles. Le contrôleur
de modèles analyse les templates côté serveur avant de les envoyer au client.
Elle doit retourner une classe Anakeen\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 prendre 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 Smart Element.
Exemple :
class RenderConfigCustom extends \Anakeen\Ui\DefaultView
{
public function getContextController(Anakeen\Core\Internal\SmartElement $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(Anakeen\Core\Internal\SmartElement $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>
# Contrôleur par défaut
Les classes de configuration de rendu par défaut utilisent le contrôleur Anakeen\Ui\DocumentTemplateContext
.
Ce contrôleur donne accès aux variables suivantes :
# 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.mdate]] | 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 |
# 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) |
# Fonctions
Clef | Définition |
---|---|
[[i18n]] | Fonction de traduction |
# 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.
WARNING
Il est recommandé d'utiliser un préfixe pour chaque traduction afin de ne pas être en conflit avec d'autres traductions.
# Exemples
Modification du pied de page pour afficher une valeur.
class MyRenderConfigCustom extends \Anakeen\Ui\DefaultView
{
public function getTemplates(Anakeen\Core\Internal\SmartElement $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>