Onglets de filtre
Transformez l'argument final optionnel $tab de where()/or_where() en une barre d'onglets permutable par le visiteur au-dessus de la grille.
Filtres de base contre onglets
where()/or_where() sans argument final $tab ajoute un filtre de base permanent, toujours appliqué, imposé côté serveur - signé par HMAC avec XcrudConfig::$appSecret pour qu'un visiteur ne puisse pas l'élargir ni le supprimer en modifiant l'URL. Ajoutez un argument $tab et la même condition devient à la place une option d'une barre d'onglets nommée, permutable par le visiteur, affichée au-dessus de la grille - cliquez sur un onglet pour changer quelle condition est active.
public function where(string $field, ?string $operator = null, ?string $value = null, ?string $tab = null): self
public function or_where(string $field, ?string $operator = null, ?string $value = null, ?string $tab = null): self
Les deux acceptent soit le style à 3 arguments symbole/opérateur nommé (=, !=, >, >=, <, <=, ou des codes comme eq/neq/gt/contains/starts/ends), soit un raccourci en une seule chaîne combinée pour les opérateurs symboliques uniquement (->where('amount > 500')). Avec le raccourci, $tab se place dans l'emplacement du 2e argument, autrement inutilisé.
Un exemple à 3 onglets
Chaque appel where() partageant le même libellé d'onglet appartient à cet onglet et se combine avec les autres exactement comme le font les appels sans onglet - avec un ET, dans l'ordre d'appel :
$xcrud->where('status', '=', 'active', 'Active');
$xcrud->where('status', '=', 'archived', 'Archived');
$xcrud->where('amount', '>', '0', 'All');
Cliquer sur « Archived » applique uniquement status = 'archived' ; cela n'applique pas non plus la condition d'« Active ». Chaque onglet est signé indépendamment et infalsifiable, comme n'importe quel appel where() ordinaire - un visiteur ne peut choisir qu'entre exactement les onglets approuvés par l'auteur de la page, jamais forger un autre filtre en modifiant l'URL.
Un onglet peut combiner plus d'une condition - deux appels where() partageant un libellé produisent un véritable ET entre eux, pas deux conditions sans rapport qui partagent simplement un nom :
$xcrud->where('amount', '>=', '1000', 'Medium');
$xcrud->where('amount', '<=', '50000', 'Medium');
Paramètres
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
$field | string | - | Nom de colonne, ou la condition combinée entière lors de l'utilisation du raccourci en chaîne unique. |
$operator | string|null | null | Symbole (=, !=, >, >=, <, <=) ou code nommé (eq, neq, gt, gte, lt, lte, contains, starts, ends). Omis lors de l'utilisation du raccourci en chaîne unique. |
$value | string|null | null | Valeur à comparer. Omise lors de l'utilisation du raccourci en chaîne unique. |
$tab | string|null | null | Libellé de l'onglet. Ne pas le renseigner garde l'appel comme filtre de base permanent ; le définir regroupe la condition sous un onglet permutable par le visiteur. |
where_raw() / or_where_raw() : l'onglet en SQL brut
Certaines conditions n'ont pas la forme « champ OP valeur » - un IN (sous-requête), par exemple. where_raw($condition, $tab = null) et or_where_raw($condition, $tab = null) insèrent $condition telle quelle (entre parenthèses) dans la clause WHERE, sans aucune analyse, mise en liste blanche ni liaison de paramètres - le même niveau de confiance que le SQL brut de subselect(). Ne construisez jamais $condition à partir d'une entrée de requête ; ce doit être une chaîne littérale que vous avez écrite, exactement comme n'importe quel autre SQL de votre base de code.
public function where_raw(string $condition, ?string $tab = null): self
public function or_where_raw(string $condition, ?string $tab = null): self
$xcrud->where_raw(
'customerNumber IN (SELECT customerNumber FROM payments GROUP BY customerNumber HAVING COUNT(*) > 5)',
'Repeat Customers'
);
Elle voyage jusqu'à l'API de la même façon qu'une condition where() ordinaire - dans la même charge utile de base-where, couverte par la même signature HMAC unique - elle est donc tout aussi infalsifiable, sans signature séparée pour elle-même. Elle accepte le même argument final optionnel $tab pour la rendre permutable dans le cadre d'un onglet de filtre, et se compose normalement avec des onglets construits à partir de where().
Onglets de plage de dates
where_raw() est aussi ce qui alimente les onglets de filtre de plage de dates cumulative (Cette semaine / Ce mois-ci / Cette année) - voir Filtres de plage de dates pour ce déroulé spécifique.