You are here

public function FlexiformFormEntityProvided::configurationForm in Flexiform 8

Prepare a configuration form.

Overrides FlexiformFormEntityBase::configurationForm

1 call to FlexiformFormEntityProvided::configurationForm()
FlexiformFormEntityLoad::configurationForm in src/Plugin/FlexiformFormEntity/FlexiformFormEntityLoad.php
Prepare a configuration form.
1 method overrides FlexiformFormEntityProvided::configurationForm()
FlexiformFormEntityLoad::configurationForm in src/Plugin/FlexiformFormEntity/FlexiformFormEntityLoad.php
Prepare a configuration form.

File

src/Plugin/FlexiformFormEntity/FlexiformFormEntityProvided.php, line 107

Class

FlexiformFormEntityProvided
Form Entity plugin.

Namespace

Drupal\flexiform\Plugin\FlexiformFormEntity

Code

public function configurationForm(array $form, FormStateInterface $form_state) {
  $form = parent::configurationForm($form, $form_state);
  $entity_type_options = $bundle_options = [];
  foreach ($this->entityTypeManager
    ->getDefinitions() as $id => $entity_type) {
    if ($entity_type
      ->isSubclassOf('\\Drupal\\Core\\Entity\\FieldableEntityInterface')) {
      $entity_type_options[$id] = $entity_type
        ->getLabel();
    }
  }
  $form['entity_type'] = [
    '#type' => 'select',
    '#options' => $entity_type_options,
    '#title' => $this
      ->t('Entity Type'),
    '#description' => $this
      ->t('The entity type.'),
    '#default_value' => !empty($this->configuration['entity_type']) ? $this->configuration['entity_type'] : '',
    '#ajax' => [
      'wrapper' => 'bundle-select-wrapper',
      'callback' => [
        $this,
        'ajaxBundleElementCallback',
      ],
    ],
  ];
  $entity_type_id = $form['entity_type']['#default_value'];
  if ($form_state
    ->getValue('bundle')) {
    $entity_type_id = $form_state
      ->getValue('bundle');
  }
  if ($input = $form_state
    ->getUserInput()) {
    $entity_type_id = $input['configuration']['entity_type'] ?: NULL;
  }
  if (!empty($entity_type_id)) {
    foreach ($this->entityBundleInfo
      ->getBundleInfo($entity_type_id) as $bundle => $info) {
      $bundle_options[$bundle] = $info['label'];
    }
  }
  $form['bundle'] = [
    '#prefix' => '<div id="bundle-select-wrapper">',
    '#suffix' => '</div>',
    '#type' => 'select',
    '#options' => $bundle_options,
    '#title' => $this
      ->t('Bundle'),
    '#description' => $this
      ->t('The bundle.'),
    '#default_value' => !empty($this->configuration['bundle']) ? $this->configuration['bundle'] : '',
  ];
  return $form;
}