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. |