9.14.1. Een aangepaste Drupal Views filter handler uitbreiden
In het vorige artikel hebben we gekeken hoe we Views-modules kunnen integreren met een aangepaste database voor de Did this help?-module:
https://www.drupal.org/project/did_this_help
In dit artikel zullen we de Views-filter overschrijven voor het Choice (ja/nee)-veld:

Nu is het een gewoon tekstveld dat is aangemaakt door de "string"-handler, die het mogelijk maakt een zoekwaarde in te vullen. Maar we hebben slechts twee opties Ja/Nee, dus het zou beter zijn een keuzelijst (dropbox) te hebben in plaats van een tekstveld. Laten we een bestand aanmaken /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 op de gegeven lijst met ja/nee-opties.
*
* @ingroup views_filter_handlers
*
* @ViewsFilter("did_this_help")
*/
class DidThisHelp extends InOperator {
}
We zullen de DidThisHelp-class laten erven van de bovenliggende InOperator-class, die een filter voorziet met selectiekeuzelijst, radioknoppen of selectievakjes, afhankelijk van de Views UI-instellingen.
In de methode getValueOptions() voegen we een lijst met beschikbare opties toe:
/**
* {@inheritdoc}
*/
public function getValueOptions() {
if (isset($this->valueOptions)) {
return $this->valueOptions;
}
$this->valueOptions = [
'yes' => $this->t('Yes'),
'no' => $this->t('No'),
];
return $this->valueOptions;
}
De property valueOptions is gedefinieerd in de bovenliggende class InOperator, dus we hoeven enkel de array met opties te definiëren.
Als resultaat hebben we dit filter gekregen:

Als we de exposed filter inschakelen, dan zien we deze keuzelijst:

Je kunt elke Filter-class overschrijven uit deze lijst met classes die door Views en andere modules worden aangeboden:
| Naam | Locatie | Beschrijving |
|---|---|---|
| Access | core/modules/node/src/Plugin/views/filter/Access.php | Filter op node_access records. |
| BooleanOperator | core/modules/views/src/Plugin/views/filter/BooleanOperator.php | Eenvoudige filter om booleaanse waarden te verwerken. |
| BooleanOperatorString | core/modules/views/src/Plugin/views/filter/BooleanOperatorString.php | Eenvoudige filter om booleaanse waarden te verwerken. |
| Broken | core/modules/views/src/Plugin/views/filter/Broken.php | Een speciale handler ter vervanging van ontbrekende of kapotte handlers. |
| Bundle | core/modules/views/src/Plugin/views/filter/Bundle.php | Filter-class die filteren op entity-bundles toestaat. |
| Current | core/modules/user/src/Plugin/views/filter/Current.php | Filter-handler voor de huidige gebruiker. |
| Date | core/modules/datetime/src/Plugin/views/filter/Date.php | Datum/tijd Views-filter. |
| Date | core/modules/views/src/Plugin/views/filter/Date.php | Filter om datums opgeslagen als timestamp te verwerken. |
| Equality | core/modules/views/src/Plugin/views/filter/Equality.php | Eenvoudige filter voor gelijk aan/niet gelijk aan. |
| FilterBooleanOperatorDefaultTest | core/modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterBooleanOperatorDefaultTest.php | Filter om queryOpBoolean() met de standaard operator te testen. |
| FilterPluginBase | core/modules/views/src/Plugin/views/filter/FilterPluginBase.php | Basisklasse voor Views-filter handlers. |
| GroupByNumeric | core/modules/views/src/Plugin/views/filter/GroupByNumeric.php | Eenvoudige filter voor groter dan/kleiner dan. |
| HistoryUserTimestamp | core/modules/history/src/Plugin/views/filter/HistoryUserTimestamp.php | Filter voor nieuwe content. |
| InOperator | core/modules/views/src/Plugin/views/filter/InOperator.php | Eenvoudige filter om meerdere opties te verwerken die via selectievakjes gekozen zijn. |
| LanguageFilter | core/modules/views/src/Plugin/views/filter/LanguageFilter.php | Voorziet filtering op taal. |
| LatestRevision | core/modules/views/src/Plugin/views/filter/LatestRevision.php | Filter om alleen de laatste revisie van een entity te tonen. |
| ListField | core/modules/options/src/Plugin/views/filter/ListField.php | Filter-handler die lijstvelden als opties gebruikt. |
| ManyToOne | core/modules/views/src/Plugin/views/filter/ManyToOne.php | Complexe filter voor many-to-one relaties, zoals termen (meerdere termen per node) of rollen (meerdere rollen per gebruiker). |
| ModerationStateFilter | core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php | Voorziet een filter voor de moderatiestatus van een entity. |
| Name | core/modules/user/src/Plugin/views/filter/Name.php | Filter-handler voor gebruikersnamen. |
| NodeComment | core/modules/comment/src/Plugin/views/filter/NodeComment.php | Filter gebaseerd op de commentaarstatus van een node. |
| NumericFilter | core/modules/views/src/Plugin/views/filter/NumericFilter.php | Eenvoudige filter voor groter dan/kleiner dan. |
| Permissions | core/modules/user/src/Plugin/views/filter/Permissions.php | Filter-handler voor gebruikersrollen. |
| Roles | core/modules/user/src/Plugin/views/filter/Roles.php | Filter-handler voor gebruikersrollen. |
| Search | core/modules/search/src/Plugin/views/filter/Search.php | Filter-handler voor zoekwoorden. |
| Standard | core/modules/views/src/Plugin/views/filter/Standard.php | Standaardimplementatie van de basisfilter-plugin. |
| StatisticsLastUpdated | core/modules/comment/src/Plugin/views/filter/StatisticsLastUpdated.php | Filter-handler voor de meest recente update van een commentaar of node. |
| Status | core/modules/file/src/Plugin/views/filter/Status.php | Filter op bestandsstatus. |
| Status | core/modules/node/src/Plugin/views/filter/Status.php | Filter op publicatiestatus. |
| StringFilter | core/modules/views/src/Plugin/views/filter/StringFilter.php | Basis tekstveld-filter om string-vergelijkingen uit te voeren, zoals gelijk aan, like, not like, enz. |
| TaxonomyIndexTid | core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php | Filter op term ID. |
| TaxonomyIndexTidDepth | core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTidDepth.php | Filter-handler voor taxonomietermen met diepte. |
| UidRevision | core/modules/node/src/Plugin/views/filter/UidRevision.php | Filter-handler om te controleren op revisies die door een bepaalde gebruiker zijn aangemaakt. |
| UserUid | core/modules/comment/src/Plugin/views/filter/UserUid.php | Filter-handler die een user ID accepteert om nodes te vinden waarop de gebruiker heeft gepost of gereageerd. |
| UserUid | core/modules/tracker/src/Plugin/views/filter/UserUid.php | UID-filter om te controleren op nodes waarop een gebruiker heeft gepost of gereageerd. |
| ViewsFilter | core/modules/views/src/Annotation/ViewsFilter.php | Definieert een Plugin-annotatieobject voor Views-filter handlers. |