9.14.1. Erweiterung eines benutzerdefinierten Filter-Handlers für Drupal Views
Im vorherigen Artikel haben wir uns angesehen, wie man das Views-Modul mit einer benutzerdefinierten Datenbank für das Modul Did this help? integriert:
https://www.drupal.org/project/did_this_help
In diesem Artikel überschreiben wir den Views-Filter für das Choice-Feld (Ja/Nein):

Derzeit ist es ein normales Textfeld, das mit dem "string"-Handler erstellt wurde und die Eingabe eines Suchbegriffs erlaubt. Da wir aber nur zwei Optionen (Ja/Nein) haben, wäre es besser, ein Dropdown statt eines Textfeldes zu verwenden. Erstellen wir also die Datei /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;
/**
 * Filtert anhand einer Liste von Ja/Nein-Optionen.
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter("did_this_help")
 */
class DidThisHelp extends InOperator {
}
Wir erben die Klasse DidThisHelp von der Elternklasse InOperator, welche einen Filter mit Auswahlfeld, Radio-Buttons oder Checkboxen bereitstellt, je nach Views UI-Einstellungen.
In der Methode getValueOptions() fügen wir die Liste der verfügbaren Optionen hinzu:
  /**
   * {@inheritdoc}
   */
  public function getValueOptions() {
    if (isset($this->valueOptions)) {
      return $this->valueOptions;
    }
    $this->valueOptions = [
      'yes' => $this->t('Yes'),
      'no' => $this->t('No'),
    ];
    return $this->valueOptions;
  }
Die Eigenschaft valueOptions ist in der Elternklasse InOperator definiert, daher müssen wir hier nur das Array mit Optionen angeben.
Als Ergebnis erhalten wir diesen Filter:

Wenn wir den Filter als exponiert aktivieren, sehen wir dieses Dropdown-Menü:

Sie können jede Filterklasse aus dieser Liste von Klassen überschreiben, die von Views und anderen Modulen bereitgestellt werden:
| Name | Pfad | Beschreibung | 
|---|---|---|
| Access | core/modules/node/src/Plugin/views/filter/Access.php | Filter nach node_access-Einträgen. | 
| BooleanOperator | core/modules/views/src/Plugin/views/filter/BooleanOperator.php | Einfacher Filter zum Abgleichen von booleschen Werten. | 
| BooleanOperatorString | core/modules/views/src/Plugin/views/filter/BooleanOperatorString.php | Einfacher Filter zum Abgleichen von booleschen Werten. | 
| Broken | core/modules/views/src/Plugin/views/filter/Broken.php | Handler als Platzhalter für fehlende oder defekte Handler. | 
| Bundle | core/modules/views/src/Plugin/views/filter/Bundle.php | Filterklasse zum Filtern nach Entity-Bundles. | 
| Current | core/modules/user/src/Plugin/views/filter/Current.php | Filter-Handler für den aktuellen Benutzer. | 
| Date | core/modules/datetime/src/Plugin/views/filter/Date.php | Date/Time Views Filter. | 
| Equality | core/modules/views/src/Plugin/views/filter/Equality.php | Einfacher Filter für Gleich/ungleich-Vergleiche. | 
| FilterPluginBase | core/modules/views/src/Plugin/views/filter/FilterPluginBase.php | Basisklasse für Views Filter Plugins. | 
| InOperator | core/modules/views/src/Plugin/views/filter/InOperator.php | Einfacher Filter für mehrere auswählbare Optionen über Checkboxen. | 
| LanguageFilter | core/modules/views/src/Plugin/views/filter/LanguageFilter.php | Filter für Sprach-Auswahl. | 
| LatestRevision | core/modules/views/src/Plugin/views/filter/LatestRevision.php | Filter, um nur die neueste Revision einer Entität anzuzeigen. | 
| ListField | core/modules/options/src/Plugin/views/filter/ListField.php | Filter-Handler, der List-Felder als Optionen nutzt. | 
| ManyToOne | core/modules/views/src/Plugin/views/filter/ManyToOne.php | Komplexer Filter für „Viele-zu-Eins“-Beziehungen, z.B. Taxonomie-Begriffe oder Rollen. | 
| ModerationStateFilter | core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php | Filter für den Moderationsstatus einer Entität. | 
| Name | core/modules/user/src/Plugin/views/filter/Name.php | Filter-Handler für Benutzernamen. | 
| NodeComment | core/modules/comment/src/Plugin/views/filter/NodeComment.php | Filter basierend auf dem Status von Kommentar-Node. | 
| NumericFilter | core/modules/views/src/Plugin/views/filter/NumericFilter.php | Einfacher Filter für „größer als“ / „kleiner als“ Vergleiche. | 
| Permissions | core/modules/user/src/Plugin/views/filter/Permissions.php | Filter-Handler für Benutzerrollen. | 
| Roles | core/modules/user/src/Plugin/views/filter/Roles.php | Filter-Handler für Benutzerrollen. | 
| Search | core/modules/search/src/Plugin/views/filter/Search.php | Filter-Handler für Suchbegriffe. | 
| Standard | core/modules/views/src/Plugin/views/filter/Standard.php | Standardimplementierung des Basis-Filter-Plugins. | 
| StatisticsLastUpdated | core/modules/comment/src/Plugin/views/filter/StatisticsLastUpdated.php | Filter für das neuere Datum des letzten Kommentars oder der letzten Node-Aktualisierung. | 
| Status | core/modules/file/src/Plugin/views/filter/Status.php | Filter nach Dateistatus. | 
| Status | core/modules/node/src/Plugin/views/filter/Status.php | Filter nach Veröffentlichungsstatus. | 
| StringFilter | core/modules/views/src/Plugin/views/filter/StringFilter.php | Basistextfeldfilter zur Bearbeitung von String-Filterbefehlen wie Gleichheit, Like, Not Like, etc. | 
| TaxonomyIndexTid | core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php | Filter nach Taxonomie-Begriff-ID. | 
| TaxonomyIndexTidDepth | core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTidDepth.php | Filter-Handler für Taxonomiebegriffe mit Tiefenangabe. | 
| UidRevision | core/modules/node/src/Plugin/views/filter/UidRevision.php | Filter zum Überprüfen von Revisionen, die ein bestimmter Benutzer erstellt hat. | 
| UserUid | core/modules/comment/src/Plugin/views/filter/UserUid.php | Filter, der eine Benutzer-ID akzeptiert, um Knoten zu überprüfen, die der Benutzer gepostet oder kommentiert hat. | 
| UserUid | core/modules/tracker/src/Plugin/views/filter/UserUid.php | UID-Filter zum Überprüfen von Knoten, die ein Benutzer gepostet oder kommentiert hat. | 
| ViewsFilter | core/modules/views/src/Plugin/Annotation/ViewsFilter.php | Definiert eine Plugin-Annotation für Views-Filter-Handler. |