9.14.1. Étendre un gestionnaire de filtre Views personnalisé dans Drupal
Dans l’article précédent, nous avons vu comment intégrer le module Views avec une base de données personnalisée pour le module Did this help? :
https://www.drupal.org/project/did_this_help
Dans cet article, nous allons surcharger le filtre Views pour un champ Choice (oui/non) :
Actuellement, c’est un champ texte classique créé par le gestionnaire "string", qui permet d’ajouter une clé de recherche. Mais comme nous avons seulement deux options Oui/Non, il serait préférable d’avoir une liste déroulante plutôt qu’un champ texte. Créons donc un fichier /did_this_help/src/Plugin/views/filter/DidThisHelp.php
:
<?php namespace Drupal\did_this_help\Plugin\views\filter; use Drupal\views\Plugin\views\filter\InOperator; /** * Filtre par liste donnée d’options oui/non. * * @ingroup views_filter_handlers * * @ViewsFilter("did_this_help") */ class DidThisHelp extends InOperator { }
Nous héritons la classe DidThisHelp de la classe parente InOperator
, qui fournit un filtre avec une liste déroulante, boutons radio ou cases à cocher selon les réglages de l’interface Views.
Dans la méthode getValueOptions()
, nous allons ajouter la liste des options disponibles :
/** * {@inheritdoc} */ public function getValueOptions() { if (isset($this->valueOptions)) { return $this->valueOptions; } $this->valueOptions = [ 'yes' => $this->t('Yes'), 'no' => $this->t('No'), ]; return $this->valueOptions; }
La propriété valueOptions
est définie dans la classe parente InOperator
, nous avons donc seulement besoin de définir le tableau des options.
Dans le résultat, nous obtenons ce filtre :
Si nous activons le filtre exposé, nous voyons cette liste déroulante :
Vous pouvez surcharger n’importe quelle classe de filtre dans cette liste des classes fournies par Views et d’autres modules :
Nom | Emplacement | Description |
---|---|---|
Access | core/modules/node/src/Plugin/views/filter/Access.php | Filtrer par les enregistrements node_access. |
BooleanOperator | core/modules/views/src/Plugin/views/filter/BooleanOperator.php | Filtre simple pour gérer les valeurs booléennes. |
BooleanOperatorString | core/modules/views/src/Plugin/views/filter/BooleanOperatorString.php | Filtre simple pour gérer les valeurs booléennes. |
Broken | core/modules/views/src/Plugin/views/filter/Broken.php | Gestionnaire spécial pour remplacer les gestionnaires manquants ou cassés. |
Bundle | core/modules/views/src/Plugin/views/filter/Bundle.php | Classe de filtre permettant de filtrer par bundles d’entités. |
Current | core/modules/user/src/Plugin/views/filter/Current.php | Gestionnaire de filtre pour l’utilisateur courant. |
Date | core/modules/datetime/src/Plugin/views/filter/Date.php | Filtre de date/heure pour Views. |
Date | core/modules/views/src/Plugin/views/filter/Date.php | Filtre pour gérer les dates stockées en timestamp. |
Equality | core/modules/views/src/Plugin/views/filter/Equality.php | Filtre simple pour gérer les filtres égal / différent. |
FilterBooleanOperatorDefaultTest | core/modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterBooleanOperatorDefaultTest.php | Filtre pour tester queryOpBoolean() avec opérateur par défaut. |
FilterPluginBase | core/modules/views/src/Plugin/views/filter/FilterPluginBase.php | Classe de base pour les plugins gestionnaires de filtre Views. |
GroupByNumeric | core/modules/views/src/Plugin/views/filter/GroupByNumeric.php | Filtre simple pour gérer les filtres supérieurs/inférieurs. |
HistoryUserTimestamp | core/modules/history/src/Plugin/views/filter/HistoryUserTimestamp.php | Filtre pour le contenu récent. |
InOperator | core/modules/views/src/Plugin/views/filter/InOperator.php | Filtre simple pour gérer la correspondance de multiples options sélectionnables via cases à cocher. |
LanguageFilter | core/modules/views/src/Plugin/views/filter/LanguageFilter.php | Fournit un filtrage par langue. |
LatestRevision | core/modules/views/src/Plugin/views/filter/LatestRevision.php | Filtre pour afficher uniquement la dernière révision d’une entité. |
ListField | core/modules/options/src/Plugin/views/filter/ListField.php | Gestionnaire de filtre utilisant des champs listes comme options. |
ManyToOne | core/modules/views/src/Plugin/views/filter/ManyToOne.php | Filtre complexe pour gérer les relations plusieurs-à-un, comme les termes (plusieurs termes par nœud) ou les rôles (plusieurs rôles par utilisateur). |
ModerationStateFilter | core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php | Fournit un filtre pour l’état de modération d’une entité. |
Name | core/modules/user/src/Plugin/views/filter/Name.php | Gestionnaire de filtre pour les noms d’utilisateur. |
NodeComment | core/modules/comment/src/Plugin/views/filter/NodeComment.php | Filtre basé sur le statut des commentaires de nœud. |
NumericFilter | core/modules/views/src/Plugin/views/filter/NumericFilter.php | Filtre simple pour gérer les filtres supérieurs/inférieurs. |
Permissions | core/modules/user/src/Plugin/views/filter/Permissions.php | Gestionnaire de filtre pour les rôles utilisateurs. |
Roles | core/modules/user/src/Plugin/views/filter/Roles.php | Gestionnaire de filtre pour les rôles utilisateurs. |
Search | core/modules/search/src/Plugin/views/filter/Search.php | Gestionnaire de filtre pour les mots-clés de recherche. |
Standard | core/modules/views/src/Plugin/views/filter/Standard.php | Implémentation par défaut du plugin de filtre de base. |
StatisticsLastUpdated | core/modules/comment/src/Plugin/views/filter/StatisticsLastUpdated.php | Gestionnaire de filtre pour la date de la dernière mise à jour des commentaires ou nœuds. |
Status | core/modules/file/src/Plugin/views/filter/Status.php | Filtre par statut de fichier. |
Status | core/modules/node/src/Plugin/views/filter/Status.php | Filtre par statut publié. |
StringFilter | core/modules/views/src/Plugin/views/filter/StringFilter.php | Filtre texte de base pour gérer les commandes de filtrage de chaînes, y compris égalité, similaire, non similaire, etc. |
TaxonomyIndexTid | core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php | Filtre par ID de terme. |
TaxonomyIndexTidDepth | core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTidDepth.php | Gestionnaire de filtre pour les termes taxonomiques avec profondeur. |
UidRevision | core/modules/node/src/Plugin/views/filter/UidRevision.php | Filtre pour vérifier les révisions créées par un certain utilisateur. |
UserUid | core/modules/comment/src/Plugin/views/filter/UserUid.php | Filtre acceptant un ID utilisateur pour vérifier les nœuds qu’il a postés ou commentés. |
UserUid | core/modules/tracker/src/Plugin/views/filter/UserUid.php | Filtre UID pour vérifier les nœuds qu’un utilisateur a postés ou commentés. |
ViewsFilter | core/modules/views/src/Annotation/ViewsFilter.php | Définit une annotation plugin pour les gestionnaires de filtre Views. |