/

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ètreTypePar défautDescription
$fieldstring-Nom de colonne, ou la condition combinée entière lors de l'utilisation du raccourci en chaîne unique.
$operatorstring|nullnullSymbole (=, !=, >, >=, <, <=) ou code nommé (eq, neq, gt, gte, lt, lte, contains, starts, ends). Omis lors de l'utilisation du raccourci en chaîne unique.
$valuestring|nullnullValeur à comparer. Omise lors de l'utilisation du raccourci en chaîne unique.
$tabstring|nullnullLibellé 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.