Recherche avancée et recherche par colonne
Trois surfaces de recherche liées entre elles : le champ de recherche global, la recherche par en-tête de colonne, et le panneau de recherche avancée à conditions multiples.
1. Le champ de recherche simple/global
La barre d'outils de chaque grille possède un champ de recherche qui interroge simultanément toutes les colonnes visibles. La façon dont un terme saisi est transformé en valeur SQL LIKE est personnalisable avec search_pattern() :
public function search_pattern(string $pattern): self
$pattern doit contenir le paramètre littéral {term}, remplacé par le terme saisi au moment de la requête. La valeur par défaut est '%{term}%' (contient).
$xcrud->search_pattern('{term}%'); // commence par, au lieu de contient
$xcrud->search_pattern('%{term}'); // se termine par
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
$pattern | string | - | Doit contenir {term}. Lève une exception sinon. |
Ceci n'affecte que le champ de recherche simple et les champs de recherche par en-tête de colonne ci-dessous - les opérateurs contient/commence par/se termine par du panneau de recherche avancée sont des choix explicites propres à chaque condition, indépendants de search_pattern().
2. Recherche par en-tête de colonne
Chaque colonne peut également afficher son propre petit champ de recherche directement sous son en-tête, permettant à un visiteur de filtrer sur cette seule colonne au lieu de rechercher dans toutes les colonnes visibles à la fois. Cette option s'active/se désactive depuis le menu ⋯ Plus d'options de la barre d'outils de la grille ("Afficher la recherche par colonne") - voir Barre d'outils de la grille et le menu Plus d'options pour le reste du contenu de ce menu. Le choix du visiteur est mémorisé par navigateur pour la session, il n'a donc pas besoin d'être réactivé à chaque chargement de page.
Les conditions de recherche par colonne se combinent avec le champ de recherche simple et avec toute condition de recherche avancée - les trois réduisent le résultat ensemble, ils ne se remplacent pas les uns les autres.
3. Le panneau de recherche avancée
Ouvert depuis un bouton "Avancée" de la barre d'outils, c'est un constructeur de filtres à conditions multiples : ajoutez autant de lignes de condition que nécessaire, chacune choisissant un champ, un opérateur et une valeur, puis choisissez si les lignes se combinent avec ET ("Toutes les conditions") ou OU ("N'importe quelle condition") avant de cliquer sur Appliquer.
$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' => '$']);
Aucun code PHP supplémentaire n'est requis pour activer le panneau lui-même - il est intégré automatiquement à chaque grille. Sur cette page, ouvrir "Avancée" et combiner, par exemple, productLine = "Classic Cars" ET buyPrice > 50 réduit le résultat aux lignes correspondantes, indépendamment de ce qui est saisi dans le champ de recherche simple.
Le choix ET/OU s'applique uniquement à la façon dont les lignes du panneau se combinent entre elles - le résultat global du panneau reste toujours combiné avec ET par rapport au champ de recherche simple et à tout filtre de base permanent (where()), quel que soit le mode choisi.