Filtrer les éléments d'une vue
Voici un petit aide mémoire (niveau avancé) pour la mise en place d'un filtre un peu poussé pour ses vues.
- le problème à résoudre
Dans les événements à venir de la vue "calendrier", je ne veux afficher que les événements publiés qui vérifient ces 2 propositions :
- ils se dérouleront dans les 7 jours à venir
- ils ont débuté mais ils ne sont pas déjà terminés
- une réponse possible
Comme on le devine dans l'image ci-contre, les critères de filtrage sont :
- A : le contenu est publié ("contenu : publié (oui)) ;
- B : la date de début de l'événement est située entre aujourd'hui et aujourd'hui en huit ( now < début < now +7 day) ;
- C : la date de début de l'événement est antérieure à aujourd'hui (l'événement a débuté);
- D : la date de fin de l'événement est est postérieure à aujourd'hui (l'événement n'est pas fini).
On observera que certains critères sont incompatibles, et que le critère "contenu publié" est utilisé 2 fois. Cela s'explique par l'impossibilité d'imbriquer les parenthèses. L' écriture A et (B ou (C et D)) n'étant pas possible, nous devons utiliser une écriture de la forme (A et B) ou ( C et D). Malheureusement ces deux formes ne produisent pas le même résultat.
C'est pourquoi j'ai utilisé cette forme (A et B) ou (A et C et D) équivalente à A et (B ou (C et D)) .