Filters
Publié par Aline Bunelle
Un système de filtres intégrés à Symfony va nous permettre de pouvoir filtrer toute une application. Ceci est très intéressant pour plusieurs raisons :- gestion de cookie;
- tracking;
- redirection spécifique;
- ...
rendering: ~
web_debug: ~
security: ~
# generally, you will want to insert your own filters here
cache: ~
common: ~
flash: ~
execution: ~Les filtres sont appelés dans l’ordre de la configuration.
Nous pouvons donc créer en plus nos propres filtres. Généralement ils seront placés au même endroit que le commentaire , mais vous pouvez les mettre où vous voulez.
Par exemple, sur une application sécurisée (voir Security dans le point suivant), nous pouvons créer un filtre que nous appelerons AVANT le filtre security afin de récupérer un cookie qui permettait la connexion d’un utilisateur.
Vos filtres sont à placer dans le dossier lib de votre application. Par exemple, créons le filtre monFiltre : lib/monFiltre.class.php et traçons les déplacements de l’utilisateur en base :class myFilter extends sfFilter{
public function execute ($filterChain){
$sf_user = $this->getContext()->getUser();
$stats = new Stats();
$stats->setIp($ip);
if (isset($_SERVER['HTTP_REFERER']))
$stats->setReferer($_SERVER['HTTP_REFERER']);
$stats->setNavigateur($_SERVER['HTTP_USER_AGENT']);
$stats->setDomain($_SERVER['SERVER_NAME']);
$stats->save();
$filterChain->execute();
}ATTENTION: l’instruction $filterChain->execute(); est très importante, puisque c’est elle qui va lancer la continuation des filtres à suivre.
Remarquez que si vous placez votre code APRES cette instruction, ces dernières seront executées sur le retour des filtres. Quel retour ?? Voici un petit schéma très clair pour vous mieux faire comprendre :
Ce système de filtre peut rapidement se révéler indispensable en terme de fonctionnalité et surtout de sécurité.

