function FieldConfigListBuilder::buildRow

Builds a row for an entity in the entity listing.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity for this row of the list.

Return value

array A render array structure of fields for this entity.

Overrides EntityListBuilder::buildRow

File

core/modules/field_ui/src/FieldConfigListBuilder.php, line 131

Class

FieldConfigListBuilder
Provides lists of field config entities.

Namespace

Drupal\field_ui

Code

public function buildRow(EntityInterface $field_config) {
  /** @var \Drupal\field\FieldConfigInterface $field_config */
  $field_storage = $field_config->getFieldStorageDefinition();
  $storage_summary = $this->fieldTypeManager
    ->getStorageSettingsSummary($field_storage);
  $instance_summary = $this->fieldTypeManager
    ->getFieldSettingsSummary($field_config);
  $summary_list = [
    $storage_summary,
    $instance_summary,
  ];
  $secondary_summary_items = [];
  foreach ($summary_list as $item) {
    $secondary_summary_items[] = [
      '#type' => 'html_tag',
      '#tag' => 'div',
      '#value' => $item,
      '#attributes' => [
        'class' => [
          'field-ui-secondary-text',
        ],
      ],
    ];
  }
  $settings_summary = [
    'data' => [
      '#type' => 'container',
      '#attributes' => [
        'class' => [
          'field-settings-summary-container',
        ],
      ],
      'field_type' => [
        '#type' => 'html_tag',
        '#tag' => 'div',
        '#value' => $this->fieldTypeManager
          ->getDefinitions()[$field_storage->getType()]['label'],
        '#attributes' => [
          'class' => [
            'field-type-label',
          ],
        ],
      ],
      'summary_items' => [
        '#type' => 'container',
        '#attributes' => [
          'class' => [
            'field-settings-summary-items',
          ],
        ],
        $secondary_summary_items,
      ],
    ],
    'class' => [
      'field-settings-summary-cell',
    ],
  ];
  $cardinality = $field_storage->getCardinality();
  if ($cardinality === -1) {
    $cardinality_text = $this->t('Unlimited');
  }
  else {
    $cardinality_text = $this->formatPlural($cardinality, 'Single', 'Limited to @count');
  }
  $label_data = [
    'data' => [
      '#type' => 'container',
      '#attributes' => [
        'class' => [
          'field-label-container',
        ],
      ],
      'label_wrapper' => [
        '#type' => 'container',
        '#attributes' => [
          'class' => [
            'field-label-wrapper',
          ],
        ],
        'label' => [
          '#type' => 'html_tag',
          '#tag' => 'span',
          '#plain_text' => $field_config->getLabel(),
          '#attributes' => [
            'class' => [
              'field-label-text',
            ],
          ],
        ],
        'machine_name' => [
          '#type' => 'html_tag',
          '#tag' => 'span',
          '#plain_text' => ' ' . $field_config->getName(),
          '#attributes' => [
            'class' => [
              'field-ui-secondary-text',
              'field-machine-name',
            ],
          ],
        ],
      ],
      'details' => [
        '#type' => 'container',
        '#attributes' => [
          'class' => [
            'field-details-container',
          ],
        ],
        'cardinality_pill' => [
          '#type' => 'html_tag',
          '#tag' => 'span',
          '#value' => $cardinality_text,
          '#attributes' => [
            'class' => [
              'field-ui-pill',
            ],
          ],
        ],
      ],
    ],
  ];
  // Add required pill if field is required.
  if ($field_config->isRequired()) {
    $label_data['data']['details']['required_pill'] = [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => $this->t('Required'),
      '#attributes' => [
        'class' => [
          'field-ui-pill',
        ],
      ],
    ];
  }
  $row = [
    'id' => Html::getClass($field_config->getName()),
    'data' => [
      'label' => $label_data,
      'settings_summary' => $settings_summary,
    ],
  ];
  // Add the operations.
  $row['data'] = $row['data'] + parent::buildRow($field_config);
  if ($field_storage->isLocked()) {
    $row['data']['operations'] = [
      'data' => [
        '#markup' => $this->t('Locked'),
      ],
    ];
    $row['class'][] = 'menu-disabled';
  }
  return $row;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.