Attributs


1Présentation

Temma propose des attributs PHP dont l'utilisation est complètement optionnelle, et qui permettent de contrôler l'accès aux contrôleurs et aux actions.

Ces attributs sont cumulables, il est possible de mettre plusieurs attributs différents (et parfois plusieurs fois le même attribut, avec des paramètres différents) sur le même contrôleur ou la même action.

De plus, vous avez la possibilité de créer vos propres attributs, qui pourront gérer les accès aux contrôleurs et aux actions.

Attributs proposés par Temma

Temma fournit plusieurs attributs, dont la documentation est accessible dans la section "Helpers" :

  • Auth : Pour restreindre les accès aux utilisateurs authentifiés.
  • View : Pour gérer la vue des contrôleurs et des actions.
  • Template : Pour définir le chemin vers le fichier de template.
  • Method : Pour gérer les méthodes HTTP autorisées.
  • Referer : Pour filtrer les accès par HTTP REFERER.
  • Redirect : Pour rediriger les requêtes automatiquement.

2Écrire vos propres attributs

Vous pouvez créer des attributs qui pourront gérer de manière fine les accès aux contrôleurs et aux actions.


2.1Héritage

Vos attributs doivent dériver de l'objet \Temma\Web\Attribute, qui offre plusieurs fonctionnalités relativement similaires à celles des contrôleurs :

  • L'accès aux variables de templates par la notion à crochet.
    Par exemple :
    • $this['var'] = 'value'; pour définir une variable
    • $var = $this['var']; pour lire la valeur d'une variable.
  • L'accès aux sources de données sous forme de propriétés directes de l'objet.
    Par exemple : $this->db pour accéder à une base de données nommée db.
  • Les méthodes $this->_httpCode() et $this->_httpError() pour définir le code HTTP de retour, ou le code d'erreur HTTP.
    Les méthodes $this->_getHttpCode() et $this->_getHttpError() pour récupérer le code HTTP préalablement défini.
  • Les méthodes $this->_redirect() et $this->_redirect301() pour définir des ordres de redirection.
  • Les méthodes $this->_view() pour définir la vue, $this->_template() pour définir le template, et $this->_templatePrefix() pour définir le préfixe de template.

2.2Flux d'exécution

Pour modifier le flux d'exécution, un attribut doit lever une exception spécifique :

  • \Temma\Exceptions\FlowHalt : Arrête le flux d'exécution. Aucun autre plugin ou contrôleur ne sera exécuté, et le framework passe directement au traitement de la vue ou de la redirection.
  • \Temma\Exceptions\FlowRestart : Relance le traitement de la phase (pré-plugins, contrôleur ou post-plugins) en cours.
  • \Temma\Exceptions\FlowReboot : Relance toute la chaîne de traitements (pré-plugins + contrôleur + post-plugins).
  • \Temma\Exceptions\FlowQuit : Arrête l'exécution du framework. Aucun autre plugin ou contrôleur ne sera exécuté. La vue ne sera pas exécutée et les demandes de redirection ne sont pas prises en compte.