You are here

public function SiteSettingEntityTypeForm::form in Site Settings and Labels 8

Gets the actual form array to be built.

Overrides EntityForm::form

See also

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

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

File

src/Form/SiteSettingEntityTypeForm.php, line 51

Class

SiteSettingEntityTypeForm
Class SiteSettingEntityTypeForm.

Namespace

Drupal\site_settings\Form

Code

public function form(array $form, FormStateInterface $form_state) {
  $form = parent::form($form, $form_state);

  /** @var \Drupal\site_settings\Entity\SiteSettingEntityType $site_setting_entity_type */
  $site_setting_entity_type = $this->entity;
  $form['label'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('Label'),
    '#maxlength' => 255,
    '#default_value' => $site_setting_entity_type
      ->label(),
    '#description' => $this
      ->t("The label for the particular setting."),
    '#required' => TRUE,
  ];
  $fieldsets = $this
    ->getFieldsets($site_setting_entity_type);
  if ($fieldsets) {
    array_unshift($fieldsets, $this
      ->getCreateNewLabel());
    $form['existing_fieldset'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('Choose existing "Fieldset Legend" label'),
      '#options' => array_combine($fieldsets, $fieldsets),
      '#default_value' => $site_setting_entity_type->fieldset,
      '#description' => $this
        ->t("The fieldset to group this particular setting in."),
      '#required' => TRUE,
      '#empty_option' => '-- select one --',
      '#empty_value' => '',
    ];
  }
  $form['new_fieldset'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('Create a new "Fieldset Legend" label'),
    '#maxlength' => 255,
    '#default_value' => $site_setting_entity_type->fieldset,
    '#description' => $this
      ->t("A new fieldset to group this particular setting in."),
    '#required' => FALSE,
  ];
  if ($fieldsets) {
    $form['new_fieldset']['#states'] = [
      'visible' => [
        ':input[name="existing_fieldset"]' => [
          'value' => '-- create new fieldset --',
        ],
      ],
      'required' => [
        ':input[name="existing_fieldset"]' => [
          'value' => '-- create new fieldset --',
        ],
      ],
    ];
  }
  $form['fieldset'] = [
    '#type' => 'hidden',
    '#default_value' => $site_setting_entity_type->fieldset,
  ];
  $form['multiple'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Multiple'),
    '#default_value' => $site_setting_entity_type->multiple,
    '#description' => $this
      ->t("Whether or not to allow multiple entries for this same setting."),
  ];
  $form['instructions'] = [
    '#markup' => '<p>' . $this
      ->t('Please be diligent to reuse existing fields via the "Manage Fields" tab when creating new Site Settings to avoid performance issues.') . '</p>',
  ];
  $form['id'] = [
    '#type' => 'machine_name',
    '#default_value' => $site_setting_entity_type
      ->id(),
    '#machine_name' => [
      'exists' => '\\Drupal\\site_settings\\Entity\\SiteSettingEntityType::load',
    ],
    '#disabled' => !$site_setting_entity_type
      ->isNew(),
  ];
  return $form;
}