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