You are here

public function BlockEntitySettingTrayForm::form in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/settings_tray/src/Block/BlockEntitySettingTrayForm.php \Drupal\settings_tray\Block\BlockEntitySettingTrayForm::form()

Gets the actual form array to be built.

Overrides BlockForm::form

See also

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

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

File

core/modules/settings_tray/src/Block/BlockEntitySettingTrayForm.php, line 46

Class

BlockEntitySettingTrayForm
Provides form for block instance forms when used in the off-canvas dialog.

Namespace

Drupal\settings_tray\Block

Code

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

  // Create link to full block form.
  $query = [];
  if ($destination = $this
    ->getRequest()->query
    ->get('destination')) {
    $query['destination'] = $destination;
  }
  $form['advanced_link'] = [
    '#type' => 'link',
    '#title' => $this
      ->t('Advanced block options'),
    '#url' => $this->entity
      ->toUrl('edit-form', [
      'query' => $query,
    ]),
    '#weight' => 1000,
  ];

  // Remove the ID and region elements.
  unset($form['id'], $form['region'], $form['settings']['admin_label']);
  if (isset($form['settings']['label_display']) && isset($form['settings']['label'])) {

    // Only show the label input if the label will be shown on the page.
    $form['settings']['label_display']['#weight'] = -100;
    $form['settings']['label']['#states']['visible'] = [
      ':input[name="settings[label_display]"]' => [
        'checked' => TRUE,
      ],
    ];

    // Relabel to "Block title" because on the front-end this may be confused
    // with page title.
    $form['settings']['label']['#title'] = $this
      ->t("Block title");
    $form['settings']['label_display']['#title'] = $this
      ->t("Display block title");
  }
  return $form;
}