EntityViewsData::processViewsDataForEntityReference

protected EntityViewsData::processViewsDataForEntityReference($table, FieldDefinitionInterface $field_definition, array &$views_field, $field_column_name)

Processes the views data for an entity reference field.

Parameters

string $table: The table the language field is added to.

\Drupal\Core\Field\FieldDefinitionInterface $field_definition: The field definition.

array $views_field: The views field data.

string $field_column_name: The field column being processed.

File

core/modules/views/src/EntityViewsData.php, line 555

Class

EntityViewsData
Provides generic views integration for entities.

Namespace

Drupal\views

Code

protected function processViewsDataForEntityReference($table, FieldDefinitionInterface $field_definition, array &$views_field, $field_column_name) {

  // @todo Should the actual field handler respect that this just renders a
  //   number?
  // @todo Create an optional entity field handler, that can render the
  //   entity.
  // @see https://www.drupal.org/node/2322949

  if ($entity_type_id = $field_definition->getItemDefinition()->getSetting('target_type')) {
    $entity_type = $this->entityManager->getDefinition($entity_type_id);
    if ($entity_type instanceof ContentEntityType) {
      $views_field['relationship'] = [
        'base' => $this->getViewsTableForEntityType($entity_type),
        'base field' => $entity_type->getKey('id'),
        'label' => $entity_type->getLabel(),
        'title' => $entity_type->getLabel(),
        'id' => 'standard',
      ];
      $views_field['field']['id'] = 'field';
      $views_field['argument']['id'] = 'numeric';
      $views_field['filter']['id'] = 'numeric';
      $views_field['sort']['id'] = 'standard';
    }
    else {
      $views_field['field']['id'] = 'field';
      $views_field['argument']['id'] = 'string';
      $views_field['filter']['id'] = 'string';
      $views_field['sort']['id'] = 'standard';
    }
  }

  if ($field_definition->getName() == $this->entityType->getKey('bundle')) {
    $views_field['filter']['id'] = 'bundle';
  }
}
doc_Drupal
2016-10-29 09:09:12
Comments
Leave a Comment

Please login to continue.