farm-2.x-dev/modules/core/entity/modules/views/src/EntityViewsDataTaxonomyFilterTrait.php
modules/core/entity/modules/views/src/EntityViewsDataTaxonomyFilterTrait.php
<?php namespace Drupal\farm_entity_views; /** * Configures the correct view filter for taxonomy_term reference fields. * * @see EntityViewsData * @see \taxonomy_field_views_data_alter() */ trait EntityViewsDataTaxonomyFilterTrait { /** * {@inheritdoc} */ protected function addReverseRelationships(array &$data, array $fields) { parent::addReverseRelationships($data, $fields); // Configure the taxonomy_term reference field filter. // Logic derived form taxonomy_field_views_data_alter(). foreach ($fields as $field) { // If this is not a taxonomy term reference field, skip it. if ($field->getSettings()['target_type'] !== 'taxonomy_term') { continue; } // Get the field name. $field_name = $field->getName(); // Iterate through the Views data tables and columns. foreach ($data as $table_name => $table_data) { foreach ($table_data as $table_field_name => $field_data) { // If this field doesn't have a filter handler, skip it. if (!isset($field_data['filter'])) { continue; } // Ensure that we are only altering the Views field we want. // This will either be the field name itself, or the field name plus // a `_target_id` suffix (depending on whether the field is a base or // bundle field, single or multiple values, etc). $table_field_names = [ $field_name, $field_name . '_target_id', ]; if (in_array($table_field_name, $table_field_names)) { // Set the filter handler ID. $data[$table_name][$table_field_name]['filter']['id'] = 'taxonomy_index_tid'; } } } } } }