Filterregel „Expression“
Bemerkung
Ab Version 2.4 vorhanden - aktuell noch experimentelles Feature!
Mit der Filterregel „Expression“ kann die Ausführung weiterer Filterregeln an Bedingungen geknüpft werden. Es wird ein Knoten in der Regelliste erzeugt, der ein oder maximal zwei weitere Filterregeln als Kindknoten aufnehmen kann.
Die Bedingung wird in der Filterregel als Symfony-Expression angelegt - ist die Bedingung erfüllt, wird die erste Filterregel der Kindknoten ausgeführt und wenn die Bedingung nicht erfüllt ist, die zweite Filterregel der Kindknoten.
Die zweite Filterregel der Kindknoten ist optional - ist diese nicht vorhanden, werden keine Item-Ids an die Liste weiter gereicht, d. h. in der Liste werden keine Daten ausgegeben.
Der Aufbau könnte wie folgt aussehen:

Gibt es eine Sammlung von Filterregeln, die im ersten Kindknoten zum Tragen kommen sollen, können diese in einer UND-Bedingung zusammengefasst werden.

In der Expression-Syntax stehen aktuell folgende Parameter zur Verfügung, die zur Prüfung herangezogen werden können:
filterUrl: Array mit den URL-Filterparameternrequest: der aktuelle Request-Stack
Bemerkung
Die Ansicht von Filter-Widgets im Frontend wird durch diese Filterregel nicht beeinflusst - ggf. kommt diese Feature noch hinzu.
Beispiele zum Aufbau:
Aufgabe: Zeige Liste erst an, wenn ein Filterwert gesetzt ist.
Expression: filterUrl != []
Aufbau:
Filterregel Expression
Filterregel zum Filtern z. B. Mehrfachauswahl, oder Einfachauswahl
Hier muss keine zweite Filterregel als Kindknoten angelegt werden - ist aber optional möglich.
Aufgabe: Zeige gefilterte Liste erst an, wenn ein Filterwert gesetzt ist - wenn kein Filter gesetzt ist zeige einen
festen Datensatz an.
Expression: filterUrl != []
Aufbau:
Filterregel Expression
Filterregel zum Filtern z. B. Mehrfachauswahl oder Einfachauswahl
Filterregel „Vordefinierter Satz von Items“ mit der gewünschten ID des Datensatzes bzw. den IDs der Datensätze
Beispiele der Expressions:
kein Filterparameter ist gesetzt:
filterUrl != []Filterparameter mit URL-Parameter
kategorienmuss Wert enthalten:(filterUrl['kategorien'] ?? '') != ''GET-Parameter
foodarf nicht1sein:(!request.query.has('foo') || request.query.get('foo') !== '1')
Mögliche Operatoren sind im Handbuch von Symfony zu finden.