function IconPackManager::getExtractorPluginForms

Retrieve extractor forms based on the provided icon set limit.

Parameters

array $form: The form structure where widgets are being attached to. This might be a full form structure, or a sub-element of a larger form.

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

array $default_settings: The settings for the forms (optional).

array $allowed_icon_packs: The list of icon packs (optional).

bool $wrap_details: Wrap each form in details (optional).

Overrides IconPackManagerInterface::getExtractorPluginForms

File

core/lib/Drupal/Core/Theme/Icon/Plugin/IconPackManager.php, line 287

Class

IconPackManager
Defines an icon pack plugin manager to deal with icons.

Namespace

Drupal\Core\Theme\Icon\Plugin

Code

public function getExtractorPluginForms(array &$form, FormStateInterface $form_state, array $default_settings = [], array $allowed_icon_pack = [], bool $wrap_details = FALSE) : void {
  $icon_pack_definitions = $this->getDefinitions();
  if (NULL === $icon_pack_definitions) {
    return;
  }
  if (!empty($allowed_icon_pack)) {
    $icon_pack_definitions = array_intersect_key($icon_pack_definitions, $allowed_icon_pack);
  }
  $extractor_forms = $this->iconPackExtractorManager
    ->getExtractorForms($icon_pack_definitions);
  if (empty($extractor_forms)) {
    return;
  }
  foreach ($icon_pack_definitions as $pack_id => $definition) {
    // Simply skip if no settings declared in definition.
    if (count($definition['settings'] ?? []) === 0) {
      continue;
    }
    // Create the container for each extractor settings used to have the
    // extractor form.
    $form[$pack_id] = [
      '#type' => $wrap_details ? 'details' : 'container',
      '#title' => $definition['label'] ?? $pack_id,
    ];
    // Create the extractor form and set settings so we can build with values.
    $subform_state = SubformState::createForSubform($form[$pack_id], $form, $form_state);
    $subform_state->getCompleteFormState()
      ->setValue('saved_values', $default_settings[$pack_id] ?? []);
    if (is_a($extractor_forms[$pack_id], '\\Drupal\\Core\\Plugin\\PluginFormInterface')) {
      $form[$pack_id] += $extractor_forms[$pack_id]->buildConfigurationForm($form[$pack_id], $subform_state);
    }
  }
}

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