Attribut Template


1Présentation

L'attribut \Temma\Attributes\Template permet de définir le chemin vers le fichier de template à utiliser pour un contrôleur ou une action.


2Paramètres

L'attribut propose deux paramètres :

  • $template : (null|string) Chemin vers le fichier de template à utiliser.

    Équivalent à la méthode _template() des contrôleurs.

    Ce paramètre peut prendre explicitement la valeur null, et dans ce cas c'est la valeur par défaut (controller/action.tpl) qui est utilisée.

  • $prefix : (null|string) Préfixe à ajouter au chemin du template qui sera utilisé.

    Équivalent à la méthode _templatePrefix() des contrôleurs.

    Ce paramètre peut prendre explicitement la valeur null, et dans ce cas le préfixe de template sera remis à zéro.

L'attribut prend un seul paramètre optionnel, qui est le chemin vers le fichier de template à utiliser.

Ce paramètre peut être vide ou nul, et dans ce cas c'est la valeur par défaut (controller/action.tpl) qui est utilisée.

Cet attribut fonctionne comme la méthode _template() des contrôleurs, mais il permet de sortir ce type de paramétrage du corps de l'action, pour n'y laisser que le code applicatif.


3Exemples

Pour que toutes les actions d'un contrôleur utilisent le même template :

use \Temma\Attributes\Teamplte as TµTemplate;

#[TµTemplate('myController/index.tpl')]
class MyController extends \Temma\Web\Controller {
    // ...
}

Pour qu'une action spécifique utilise le template défini :

use \Temma\Attributes\Template as TµTemplate;

class MyController extends \Temma\Web\Controller {
    #[TµTemplate('otherController/someAction.tpl')]
    public function myAction() {
        // ...
    }
}

Pour ajouter un préfixe aux templates de toutes les actions d'un contrôleur :

use \Temma\Attributes\Template as TµTemplate;

#[TµTemplate(prefix: 'special')]
class MyController extends \Temma\Web\Controller {
    // utilise le template "special/myController/myAction.tpl"
    public function myAction() {
        // ...
    }

    // utilise le template "special/index.tpl"
    #[TµTemplate('index.tpl')
    public function action2() {
        // ...
    }

    // utilise le template "myController/action3.tpl"
    #[TµTemplate(prefix: null)]
    public function action3() {
        // ...
    }
}