Suchfilter über mehrere Felder mit SearchKit+FormBuilder erstellen

Für alle fortgeschrittenen SearchKit- und FormBuilder Fans möchte ich heute eine Erkenntnis teilen, die ich einem Tipp von Coleman in diesem Mattermost-Chat zu verdanken habe. Meine Frage drehte sich darum, ob man nicht ein Suchfeld bzw. einen Filter erstellen könnte, der mehrere Felder gleichzeitig durchsucht. Hier ein etwas an den Haaren herbeigezogenes Beispiel: Folgendes SearchKit liefert Vornamen und Nachnamen und wie man sieht hat sich da wohl jemand geirrt und den Nachnamen bei der Anmeldung im Vornamenfeld eingetragen :innocent::

Nun hätte ich gerne ein Suchfeld, dass sowohl Nachname als auch Vorname durchsucht, so dass ich am Ende für „Civifreund“ beide Treffer bekomme. Klar könnte ich jetzt Anzeige-Namen suchen, aber in dem realen Fall hinter meiner Frage sollten halt gleich sechs Datenfelder auf Stichworte durchsucht werden können …

Jedenfalls lautete die Antwort wie so oft im Civi-Universum letzlich: Geht schon, man muss nur wissen wie! Los geht’s …

Eine Suche haben wir ja nun schon. Als nächstes brauchen wir ein passendes Formular:

Afform zur Suche erstellen

Für dieses füge ich als kleine Copy-Paste-Hilfe und zum Testen je einen Filter für Vorname und Nachname ein und speichere ab:

Anschließend gehe ich in den Afform HTML editor. Den findet man im Pfad civicrm/admin/afform-html oder über den Tab System Forms in der FormBuilder-Übersicht (Wenn der Eintrag fehlt, ist vermutlich die Core-Erweiterung Form Code Editor noch nicht installiert).

In der Liste nun unser Formular auswählen …

Das ganze sieht nun erstmal fast genauso aus wie im FormBuilder – auch dort kann man sich das durch den Builder erstellte HTML ansehen. Der Unterschied: Hier kann man es auch bearbeiten! Wir sehen auch unsere beiden Filter für Vorname und Nachname:

So und nun der Trick: Anders als im Backend kann man hier auch Filter erstellen, die sich auf mehrere Datenfelder beziehen. Dazu müssen sie lediglich mit Komma aufgezählt werden: name="first_name, last_name" – was dann als ODER interpretiert wird. Zusätzlich müssen nun noch für unser Feld der Marke Eigenbau noch mindestens der Feldtyp und das Label definiert werden: defn="{label: 'Integrierte Suche', input_type: 'Text'}". Zusammen sieht das Formular nun so aus:

Und nach dem Speichern tut es was es soll :tada::

das fertige Formular in Aktion

Das so angepasste Formular kann dann übrigens trotzdem im FormBuilder weiter bearbeitet werden.

8 „Gefällt mir“