You are here

public function FeaturesEditForm::submitForm in Features 8.3

Same name and namespace in other branches
  1. 8.4 modules/features_ui/src/Form/FeaturesEditForm.php \Drupal\features_ui\Form\FeaturesEditForm::submitForm()

Form submission handler.

Parameters

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

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

Overrides FormInterface::submitForm

File

modules/features_ui/src/Form/FeaturesEditForm.php, line 966

Class

FeaturesEditForm
Defines the features settings form.

Namespace

Drupal\features_ui\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  $bundle = $this->assigner
    ->getBundle($this->bundle);
  $this->assigner
    ->assignConfigPackages();
  $this->package
    ->setName($form_state
    ->getValue('name'));
  $this->package
    ->setMachineName($form_state
    ->getValue('machine_name'));
  $this->package
    ->setDescription($form_state
    ->getValue('description'));
  $this->package
    ->setVersion($form_state
    ->getValue('version'));
  $this->package
    ->setDirectory($form_state
    ->getValue('directory'));
  $this->package
    ->setBundle($bundle
    ->getMachineName());

  // Save it first just to create it in case it's a new package.
  $this->featuresManager
    ->setPackage($this->package);
  $config = $this
    ->updatePackageConfig($form_state);
  $this->featuresManager
    ->assignConfigPackage($this->package
    ->getMachineName(), $config, TRUE);
  $this->package
    ->setExcluded($this
    ->updateExcluded());
  if ($form_state
    ->getValue('require_all')) {
    $this->package
      ->setRequired(TRUE);
  }
  else {
    $required = $this
      ->updateRequired();
    $this->package
      ->setRequired($required);
  }

  // Now save it with the selected config data.
  $this->featuresManager
    ->setPackage($this->package);
  $method_id = NULL;
  $trigger = $form_state
    ->getTriggeringElement();
  $op = $form_state
    ->getValue('op');
  if (!empty($trigger) && empty($op)) {
    $method_id = $trigger['#name'];
  }

  // Set default redirect, but allow generators to change it later.
  $form_state
    ->setRedirect('features.edit', [
    'featurename' => $this->package
      ->getMachineName(),
  ]);
  if ($method_id == 'import_missing') {
    $this
      ->importMissing();
  }
  elseif (!empty($method_id)) {
    $packages = [
      $this->package
        ->getMachineName(),
    ];
    $this->generator
      ->generatePackages($method_id, $bundle, $packages);
    $this->generator
      ->applyExportFormSubmit($method_id, $form, $form_state);
  }
  $this->assigner
    ->setCurrent($bundle);
}