function IconExtractorSettingsForm::generateSettingsForm

Create the Drupal Form API element from the settings.

The generated form support default from the 'saved_value' key in the form state. This value is set in IconPackManager::getExtractorPluginForms().

Parameters

array $settings: The settings from the icon pack definition.

\Drupal\Core\Form\FormStateInterface|null $form_state: The from state used to get values if no form context.

Return value

array The form API generated.

3 calls to IconExtractorSettingsForm::generateSettingsForm()
IconExtractorBase::buildConfigurationForm in core/lib/Drupal/Core/Theme/Icon/IconExtractorBase.php
Form constructor.
IconExtractorSettingsFormTest::testGenerateSettingsForm in core/tests/Drupal/Tests/Core/Theme/Icon/IconExtractorSettingsFormTest.php
Test the IconExtractorSettingsForm::generateSettingsForm method.
IconExtractorSettingsFormTest::testGenerateSettingsFormWithValues in core/tests/Drupal/Tests/Core/Theme/Icon/IconExtractorSettingsFormTest.php
Test the IconExtractorSettingsForm::generateSettingsForm method.

File

core/lib/Drupal/Core/Theme/Icon/IconExtractorSettingsForm.php, line 59

Class

IconExtractorSettingsForm
Handle icon extractor settings form conversion from YAML to Drupal Form API.

Namespace

Drupal\Core\Theme\Icon

Code

public static function generateSettingsForm(array $settings, ?FormStateInterface $form_state = NULL) : array {
  $saved_values = $form_state ? $form_state->getCompleteFormState()
    ->getValue('saved_values') ?? [] : [];
  $form = [];
  foreach ($settings as $setting_id => $setting) {
    if (isset($setting['enum']) && is_array($setting['enum']) && !empty($setting['enum'])) {
      $form[$setting_id] = self::buildEnumForm($setting_id, $setting, $saved_values);
      continue;
    }
    // Settings format is a subset of JSON Schema, with only the scalars.
    $form[$setting_id] = match ($setting['type']) {  'boolean' => self::buildBooleanForm($setting_id, $setting, $saved_values),
      'number' => self::buildNumberForm($setting_id, $setting, $saved_values),
      'integer' => self::buildNumberForm($setting_id, $setting, $saved_values),
      'string' => self::buildStringForm($setting_id, $setting, $saved_values),
      default => self::buildStringForm($setting_id, $setting, $saved_values),
    
    };
  }
  return array_filter($form);
}

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