You are here

public function FieldGroupTable::preRender in Field Group Table 8

File

src/Plugin/field_group/FieldGroupFormatter/FieldGroupTable.php, line 272

Class

FieldGroupTable
Plugin implementation of the 'field_group_table' formatter.

Namespace

Drupal\field_group_table\Plugin\field_group\FieldGroupFormatter

Code

public function preRender(&$element, $rendering_object) {
  parent::preRender($element, $rendering_object);
  $element['#mode'] = $this->context;

  // Allow modules to alter the rows, useful for removing empty rows.
  $children = Element::children($element, TRUE);
  $this->moduleHandler
    ->alter('field_group_table_rows', $element, $children);
  if ($this
    ->getSetting('hide_table_if_empty')) {
    field_group_remove_empty_display_groups($element, []);
    if ($element == []) {
      return;
    }
  }
  $element['#type'] = 'container';
  $element['#attributes']['class'][] = 'field-group-table';
  $element['#attributes']['class'][] = $this->group->group_name;
  $element['header'] = $this
    ->buildAdditionalContent(self::ADD_CONTENT_HEADER);
  $element['table'] = [
    '#type' => 'table',
    '#caption' => $this
      ->getSetting('label_visibility') == self::DISPLAY_CAPTION ? $this->group->label : NULL,
    '#header' => $this
      ->getTableHeader(),
    '#attributes' => [
      'class' => array_merge($this
        ->getTableCssClasses($element), explode(' ', $this
        ->getSetting('classes'))),
    ],
  ];
  $element['footer'] = $this
    ->buildAdditionalContent(self::ADD_CONTENT_FOOTER);
  foreach ($children as $key => $field_name) {
    if ($row = $this
      ->buildRow($element, $field_name)) {
      $element['table']['#rows'][$key] = $row;
    }
    unset($element[$field_name]);
  }
}