function FieldConfigEditForm::actions

Same name and namespace in other branches
  1. 11.x core/modules/field_ui/src/Form/FieldConfigEditForm.php \Drupal\field_ui\Form\FieldConfigEditForm::actions()
  2. 10 core/modules/field_ui/src/Form/FieldConfigEditForm.php \Drupal\field_ui\Form\FieldConfigEditForm::actions()
  3. 9 core/modules/field_ui/src/Form/FieldConfigEditForm.php \Drupal\field_ui\Form\FieldConfigEditForm::actions()
  4. 8.9.x core/modules/field_ui/src/Form/FieldConfigEditForm.php \Drupal\field_ui\Form\FieldConfigEditForm::actions()

Returns an array of supported actions for the current entity form.

This function generates a list of Form API elements which represent actions supported by the current entity form.

@todo Consider introducing a 'preview' action here, since it is used by many entity types.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array An array of supported Form API action elements keyed by name.

Overrides EntityForm::actions

File

core/modules/field_ui/src/Form/FieldConfigEditForm.php, line 301

Class

FieldConfigEditForm
Provides a form for the field settings form.

Namespace

Drupal\field_ui\Form

Code

protected function actions(array $form, FormStateInterface $form_state) {
  $actions = parent::actions($form, $form_state);
  $actions['submit']['#value'] = $this->entity
    ->isNew() ? $this->t('Save') : $this->t('Save settings');
  $actions['submit']['#ajax'] = [
    'callback' => '::ajaxSubmit',
  ];
  if ($this->entity
    ->isNew()) {
    $entity_type = $this->entity
      ->getTargetEntityTypeId();
    $route_parameters = [
      'field_name' => $this->entity
        ->getName(),
      'entity_type' => $entity_type,
    ] + FieldUI::getRouteBundleParameter($this->entityTypeManager
      ->getDefinition($entity_type), $this->entity
      ->getTargetBundle());
    $actions['back'] = [
      '#type' => 'link',
      '#weight' => 1,
      '#title' => $this->t('Change field type'),
      '#limit_validation_errors' => [],
      '#attributes' => [
        'class' => [
          'button',
          'use-ajax',
        ],
        'data-dialog-type' => 'modal',
        'data-dialog-options' => Json::encode([
          'width' => '1100',
        ]),
      ],
      '#url' => Url::fromRoute("field_ui.field_storage_config_reset_add_{$entity_type}", $route_parameters),
    ];
  }
  if (!$this->entity
    ->isNew()) {
    $target_entity_type = $this->entityTypeManager
      ->getDefinition($this->entity
      ->getTargetEntityTypeId());
    $route_parameters = [
      'field_config' => $this->entity
        ->id(),
    ] + FieldUI::getRouteBundleParameter($target_entity_type, $this->entity
      ->getTargetBundle());
    $url = new Url('entity.field_config.' . $target_entity_type->id() . '_field_delete_form', $route_parameters);
    $actions['delete'] = [
      '#type' => 'link',
      '#title' => $this->t('Delete'),
      '#url' => $url,
      '#access' => $this->entity
        ->access('delete'),
      '#attributes' => [
        'class' => [
          'button',
          'button--danger',
          'use-ajax',
        ],
        'data-dialog-type' => 'modal',
        'data-dialog-options' => Json::encode([
          'width' => '1100',
        ]),
      ],
    ];
  }
  return $actions;
}

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