logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

9.14.1. Estendere un gestore personalizzato di filtro Views in Drupal

29/09/2025, by Ivan

Nell'articolo precedente abbiamo visto come integrare i moduli Views con un database personalizzato per il modulo Did this help?:

https://www.drupal.org/project/did_this_help

In questo articolo sovrascriveremo il filtro di Views per il campo Scelta (sì/no):

Yes/no field

Ora è un normale campo di testo creato dal gestore "string", che permette di aggiungere una chiave di ricerca. Ma abbiamo solo due opzioni Sì/No, quindi sarebbe meglio avere un menu a tendina invece di un campo di testo. Creiamo un file /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;

/**
 * Filtra in base a una lista di opzioni sì/no.
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter("did_this_help")
 */
class DidThisHelp extends InOperator {

}

Erediteremo la classe DidThisHelp dalla classe padre InOperator, che fornisce un filtro con selezione a tendina, pulsanti radio o checkbox a seconda delle impostazioni della UI di Views. 

Nel metodo getValueOptions() aggiungeremo la lista delle opzioni disponibili:

  /**
   * {@inheritdoc}
   */
  public function getValueOptions() {
    if (isset($this->valueOptions)) {
      return $this->valueOptions;
    }

    $this->valueOptions = [
      'yes' => $this->t('Sì'),
      'no' => $this->t('No'),
    ];

    return $this->valueOptions;
  }

La proprietà valueOptions è stata definita nella classe padre InOperator, quindi dobbiamo solo definire l'array delle opzioni.

Come risultato otteniamo questo filtro:

Yes/No filter

Se abilitiamo il filtro esposto, vedremo questo menu a tendina:

Yes/No dropdown

Puoi sovrascrivere qualsiasi classe Filter da questo elenco di classi fornite da Views e altri moduli:

Nome Percorso Descrizione
Access core/modules/node/src/Plugin/views/filter/Access.php Filtro per record node_access.
BooleanOperator core/modules/views/src/Plugin/views/filter/BooleanOperator.php Filtro semplice per la gestione dei valori booleani.
BooleanOperatorString core/modules/views/src/Plugin/views/filter/BooleanOperatorString.php Filtro semplice per la gestione dei valori booleani.
Broken core/modules/views/src/Plugin/views/filter/Broken.php Un gestore speciale per sostituire gestori mancanti o non funzionanti.
Bundle core/modules/views/src/Plugin/views/filter/Bundle.php Classe di filtro che consente di filtrare per bundle di entità.
Current core/modules/user/src/Plugin/views/filter/Current.php Gestore di filtro per l'utente corrente.
Date core/modules/datetime/src/Plugin/views/filter/Date.php Filtro Views per data/ora.
Date core/modules/views/src/Plugin/views/filter/Date.php Filtro per gestire le date memorizzate come timestamp.
Equality core/modules/views/src/Plugin/views/filter/Equality.php Filtro semplice per gestire uguaglianza/disuguaglianza.
FilterBooleanOperatorDefaultTest core/modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterBooleanOperatorDefaultTest.php Filtro per testare queryOpBoolean() con operatore predefinito.
FilterPluginBase core/modules/views/src/Plugin/views/filter/FilterPluginBase.php Classe base per i plugin gestori dei filtri Views.
GroupByNumeric core/modules/views/src/Plugin/views/filter/GroupByNumeric.php Filtro semplice per gestire maggiore/minore di.
HistoryUserTimestamp core/modules/history/src/Plugin/views/filter/HistoryUserTimestamp.php Filtro per contenuti nuovi.
InOperator core/modules/views/src/Plugin/views/filter/InOperator.php Filtro semplice per gestire corrispondenze di più opzioni selezionabili via checkbox.
LanguageFilter core/modules/views/src/Plugin/views/filter/LanguageFilter.php Fornisce filtro per lingua.
LatestRevision core/modules/views/src/Plugin/views/filter/LatestRevision.php Filtro per mostrare solo l'ultima revisione di un'entità.
ListField core/modules/options/src/Plugin/views/filter/ListField.php Gestore di filtro che usa i campi lista come opzioni.
ManyToOne core/modules/views/src/Plugin/views/filter/ManyToOne.php Filtro complesso per gestire relazioni molti-a-uno, come termini (molti termini per nodo) o ruoli (molti ruoli per utente).
ModerationStateFilter core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php Fornisce un filtro per lo stato di moderazione di un'entità.
Name core/modules/user/src/Plugin/views/filter/Name.php Gestore di filtro per nomi utente.
NodeComment core/modules/comment/src/Plugin/views/filter/NodeComment.php Filtro basato sullo stato dei commenti dei nodi.
NumericFilter core/modules/views/src/Plugin/views/filter/NumericFilter.php Filtro semplice per gestire maggiore/minore di.
Permissions core/modules/user/src/Plugin/views/filter/Permissions.php Gestore di filtro per ruoli utente.
Roles core/modules/user/src/Plugin/views/filter/Roles.php Gestore di filtro per ruoli utente.
Search core/modules/search/src/Plugin/views/filter/Search.php Gestore di filtro per parole chiave di ricerca.
Standard core/modules/views/src/Plugin/views/filter/Standard.php Implementazione predefinita del plugin filtro base.
StatisticsLastUpdated core/modules/comment/src/Plugin/views/filter/StatisticsLastUpdated.php Gestore di filtro per ultimo commento/nodo aggiornato.
Status core/modules/file/src/Plugin/views/filter/Status.php Filtro per stato file.
Status core/modules/node/src/Plugin/views/filter/Status.php Filtro per stato di pubblicazione.
StringFilter core/modules/views/src/Plugin/views/filter/StringFilter.php Filtro base con campo testo per gestire comandi di filtraggio stringhe inclusi uguaglianza, like, not like, ecc.
TaxonomyIndexTid core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php Filtro per ID termine.
TaxonomyIndexTidDepth core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTidDepth.php Gestore di filtro per termini tassonomici con profondità.
UidRevision core/modules/node/src/Plugin/views/filter/UidRevision.php Gestore di filtro per verificare revisioni create da un certo utente.
UserUid core/modules/comment/src/Plugin/views/filter/UserUid.php Gestore di filtro per accettare un ID utente e verificare i nodi che quell'utente ha pubblicato o commentato.
UserUid core/modules/tracker/src/Plugin/views/filter/UserUid.php Filtro UID per verificare i nodi che un utente ha pubblicato o commentato.
ViewsFilter core/modules/views/src/Annotation/ViewsFilter.php Definisce un oggetto di annotazione Plugin per i gestori dei filtri Views.