/

Erweiterte Suche & Spaltensuche

Drei zusammengehörige Suchoberflächen: das globale Suchfeld, die Spalten-Kopfzeilensuche und das mehrstufige Advanced-Search-Panel.

1. Das einfache/globale Suchfeld

Die Toolbar jedes Grids enthält ein Suchfeld, das gleichzeitig über alle sichtbaren Spalten sucht. Wie ein eingegebener Begriff in einen SQL-LIKE-Wert eingebettet wird, lässt sich mit search_pattern() anpassen:

public function search_pattern(string $pattern): self

$pattern muss den literalen Platzhalter {term} enthalten, der zur Anfragezeit durch den eingegebenen Begriff ersetzt wird. Standardmäßig ist er '%{term}%' (enthält).

$xcrud->search_pattern('{term}%');  // starts with, instead of contains
$xcrud->search_pattern('%{term}'); // ends with
ParameterTypStandardBeschreibung
$patternstring-Muss {term} enthalten. Löst andernfalls eine Exception aus.

Dies wirkt sich nur auf das einfache Suchfeld und die unten beschriebenen Spalten-Kopfzeilen-Suchfelder aus - die eigenen Operatoren des Advanced-Search-Panels (enthält/beginnt mit/endet mit) sind dort explizite, pro Bedingung getroffene Entscheidungen und werden von search_pattern() nicht beeinflusst.

2. Spalten-Kopfzeilensuche

Jede Spalte kann außerdem ein eigenes kleines Sucheingabefeld direkt unter ihrer Kopfzeile anzeigen, mit dem ein Besucher gezielt nach genau dieser einen Spalte filtern kann, statt alle sichtbaren Spalten gleichzeitig zu durchsuchen. Ein-/ausgeschaltet wird dies über das Menü Weitere Optionen der Grid-Toolbar ("Spaltensuche anzeigen") - siehe Grid-Toolbar & das Menü "Weitere Optionen" für den Rest dieses Menüs. Die Ein-/Aus-Wahl des Besuchers wird pro Browser für die Sitzung gemerkt, sodass sie nicht bei jedem Seitenaufruf erneut umgeschaltet werden muss.

Spaltensuchbedingungen kombinieren sich mit dem einfachen Suchfeld und etwaigen Advanced-Search-Bedingungen - alle drei schränken die Ergebnismenge gemeinsam ein, sie ersetzen sich nicht gegenseitig.

3. Das Advanced-Search-Panel

Über eine Schaltfläche "Advanced" in der Toolbar geöffnet, handelt es sich um einen Filter-Builder mit mehreren Bedingungen: Fügen Sie beliebig viele Bedingungszeilen hinzu, jede mit einem Feld, einem Operator und einem Wert, und legen Sie dann fest, ob die Zeilen mit UND ("All conditions") oder ODER ("Any condition") verknüpft werden, bevor Sie auf Apply klicken.

$xcrud = Xcrud::get_instance();
$xcrud->table('products');
$xcrud->route('advanced-search-demo');
$xcrud->columns('productCode,productName,productLine,productVendor,quantityInStock,buyPrice,MSRP');
$xcrud->change_type('buyPrice', 'price', '2', ['prefix' => '$']);
$xcrud->change_type('MSRP', 'price', '2', ['prefix' => '$']);

Um das Panel selbst zu aktivieren, ist kein zusätzlicher PHP-Code nötig - es ist automatisch in jedes Grid eingebaut. Öffnet man auf dieser Seite "Advanced" und kombiniert etwa productLine = "Classic Cars" UND buyPrice > 50, schränkt dies die Ergebnismenge auf passende Zeilen ein, unabhängig davon, was im einfachen Suchfeld eingegeben ist.

Die UND/ODER-Wahl betrifft nur, wie die Zeilen innerhalb des Panels miteinander kombiniert werden - das Gesamtergebnis des Panels wird unabhängig vom gewählten Modus stets zusätzlich per UND mit dem einfachen Suchfeld und einem etwaigen dauerhaften Basisfilter (where()) verknüpft.