Voila encore une fonctionnalité peu connu qui me fait aimer ce framework.
Dans Symfony, quand le système reçoit une requête il exécute une série de filtre permettant un découpage logique efficace des actions à traiter. Ce qui est intéressant, c’est que l’on peut facilement intégrer ses propres filtres afin de modifier des comportements du framework.
Par exemple, si vous voulez logguer chaque accès sur toutes les pages de votre application (c’est un exemple … ok ?), rien de plus facile.
C’est une simple classe à mettre sous le dossier lib par exemple.
< ?php class accesslogFilter extends sfFilter { public function execute($filterChain) { if ($this->isFirstCall()) // on ne logue que le premier appel à une action { /* ici, on a accès à tous les objets de symfony $request = $this->getContext()->getRequest(); etc ... permettant de tracer la requête, de savoir quel module on utilise ... */ /* à vous de créer votre log (j'vais pas tout faire) */ } $filterChain->execute(); } }
Il faut ensuite simplement activer votre filtre en ajoutant au fichier apps/myapps/config/filters.yml les lignes suivantes :
accesslog: class: accesslogFilter
Juste après le filtre de sécurité(security).
Simple non ?
Salut,
Pourrais-tu m’expliquer (et aux autres ^^) quelle est la différence entre un Filter et un Validator stp ?
Merci beaucoup pour tes billets très pratiques 😉
Hugo.
En fait ces deux concepts n’ont rien à voir. Un filtre permet de faire un traitement avant ou après l’exécution du contrôleur, c’est pour moi un élément constituant du framework. Un valideur sert à traiter des données issues de formulaire, c’est pour moi assez indépendant du framework.
A ce propos, le système de gestion de formulaire de SF 1.1 sera complètement indépendant du framework et pourra être utilisé dans d’autres concepts.
Okay merci pour ces précisions. Je débute avec Symfony 1.0.11 depuis quelques semaines. Je n’avais pas trop capté les deux concepts.
Oui j’ai vu sur le site de Fabien Potencier un billet au sujet de SF 1.1 et le framework des formulaires qui est devenu complètement différent. J’attends d’être plus à l’aise avec SF 1.0 avant de passer sur 1.1 (qui visiblement n’est pas encore tout à fait stable).
Merci.
Hugo.
Ping : Laurent Deséchalliers : “Tech”Blog » [Veille>Dev] Filtre en Synfony