You are here

public function CivicrmEntityForm::form in CiviCRM Entity 8.3

Gets the actual form array to be built.

Overrides ContentEntityForm::form

See also

\Drupal\Core\Entity\EntityForm::processForm()

\Drupal\Core\Entity\EntityForm::afterBuild()

File

src/Form/CivicrmEntityForm.php, line 76

Class

CivicrmEntityForm

Namespace

Drupal\civicrm_entity\Form

Code

public function form(array $form, FormStateInterface $form_state) {
  $form = parent::form($form, $form_state);
  $form_display_info = SupportedEntities::getFormDisplayInfo($this->entity
    ->getEntityTypeId());
  $form['#tree'] = TRUE;
  $form['#theme'] = [
    'civicrm_entity_entity_form',
  ];
  $form['#attached']['library'][] = 'civicrm_entity/form';
  $form['advanced'] = [
    '#type' => 'container',
    '#attributes' => [
      'class' => [
        'entity-meta',
      ],
    ],
    '#weight' => 99,
    '#access' => !empty($form_display_info['groups']) && !empty($form_display_info['fields']),
  ];
  $form['meta'] = [
    '#attributes' => [
      'class' => [
        'entity-meta__header',
      ],
    ],
    '#type' => 'container',
    '#group' => 'advanced',
    '#weight' => -100,
  ];
  if (isset($form_display_info['groups'])) {
    foreach ($form_display_info['groups'] as $form_display_group_key => $form_display_group) {
      $form[$form_display_group_key] = [
        '#type' => 'details',
        '#title' => $form_display_group['title'],
        '#group' => $form_display_group['group'],
        '#weight' => 95,
        '#optional' => TRUE,
        '#open' => isset($form_display_group['open']),
      ];
    }
  }
  if (isset($form_display_info['fields'])) {
    foreach ($form_display_info['fields'] as $field_name => $field_display_info) {

      // If the field is present, change it.
      if (isset($form[$field_name])) {
        if (isset($field_display_info['group'])) {
          $form[$field_name]['#group'] = $field_display_info['group'];
        }
      }
    }
  }
  return $form;
}