Documentation

Plugins

Présentation

Il est possible de demander l'exécution de plugins, avant et/ou après l'exécution des contrôleurs de l'application. Techniquement, les plugins sont des contrôleurs possédant des méthodes spéciales, qui peuvent modifier la requête avant de la transmettre au plugin suivant ou au contrôleur désigné. On peut chaîner des plugins avant le contrôleur, et d'autres plugins après.

Les fichiers source des plugins sont stockés dans le répertoire controllers de l'application.

Un même objet peut avoir à la fois des rôles de plugin et de contrôleur.

Configuration

La configuration des pré-plugins et des post-plugins se fait en utilisant le fichier temma.json (voir la documentation de la configuration). Il est possible de configurer des plugins globaux, qui seront exécutés pour toutes les requêtes :

{
    "plugins": {
        // liste des pré-plugins */
        "_pre": [
            "AuthenticationPlugin",
            "CmsController"
        ],
        // liste des post-plugins
        "_post": [
            "CleanSessionPlugin"
        ]
    }
}

Les plugins sont exécutés en suivant l'ordre dans lequel ils sont déclarés.

Il est possible de configurer des plugins qui ne s'exécuteront que pour certains contrôleurs :

{
    "plugins": {
        // plugins exécutés systématiquement pour tous les contrôleurs
        "_pre": ["AuthenticationPlugin", "CmsController"],
        "_post": ["CleanSessionPlugin"],

        // plugins appelés uniquement pour le contrôleur de homepage
        "Homepage": {
            // plugins exécutés avant le contrôleur
            "_pre": ["SomePlugin", "AnotherPlugin"],
            // plugins exécutés après le contrôleur
            "_post": ["LastPlugin"]
        },

        // plugins appelés uniquement pour le contrôleur d'affichage
        "Display": {
            "_post": ["CheckOutputPlugin"]
        }
    }
}

Il est même possible de définir des plugins qui ne vont être appelés que pour certaines actions :

{
    "plugins": {
        // plugins appelés uniquement pour le contrôleur de homepage
        "Homepage": {
            // plugins exécutés avant le contrôleur
            "_pre": ["SomePlugin", "AnotherPlugin"],
            // plugins exécutés après le contrôleur
            "_post": ["LastPlugin"],

            // plugins pour l'action show
            "show": {
                // plugins exécutés avant l'action
                "_pre": ["SpecialPlugin"],
                // plugins exécutés après l'action
                "_post": ["FooPlugin"]
            },

            // plugins pour l'action remove
            "remove": {
                // plugins exécutés avant l'action
                "_pre": ["BarPlugin"]
            }
        }
    }
}
Précédent : Modèle
Suivant : Plugins personnalisés

Table des matières