You are here

public function BulkUpdateFieldsForm::submitForm in Bulk Update Fields 8.2

Same name and namespace in other branches
  1. 8 src/Form/BulkUpdateFieldsForm.php \Drupal\bulk_update_fields\Form\BulkUpdateFieldsForm::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

src/Form/BulkUpdateFieldsForm.php, line 126

Class

BulkUpdateFieldsForm
BulkUpdateFieldsForm.

Namespace

Drupal\bulk_update_fields\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  switch ($this->step) {
    case 1:
      $this->userInput['fields'] = array_filter($form_state
        ->getValues()['table']);
      $form_state
        ->setRebuild();
      break;
    case 2:
      $form_state_values = $form_state
        ->getValues();
      foreach ($form_state_values as $field_name => $form_state_value) {

        // Paragraphs dont allow defaults.
        // Force it with just values.
        if ($field_name != 'default_value_input' && is_array($form_state_value)) {
          $form_state_values['default_value_input'][$field_name] = $form_state_value;
          foreach ($form_state_value as $key => $value) {
            if (!is_numeric($key)) {
              unset($form_state_values['default_value_input'][$field_name][$key]);
            }
            elseif (isset($form['default_value_input'][$field_name]['widget'][$key]['#paragraph_type'])) {
              $form_state_values['default_value_input'][$field_name][$key]['paragraph_type'] = $form['default_value_input'][$field_name]['widget'][$key]['#paragraph_type'];
            }
          }
        }
      }
      if (isset($this->userInput['fields']) && isset($form_state_values['default_value_input'])) {
        $this->userInput['fields'] = array_merge($this->userInput['fields'], $form_state_values['default_value_input']);
      }
      $form_state
        ->setRebuild();
      break;
    case 3:
      if (method_exists($this, 'updateFields')) {
        $return_verify = $this
          ->updateFields();
      }
      $this
        ->messenger()
        ->addStatus($return_verify);
      $this->routeBuilder
        ->rebuild();
      break;
  }
  $this->step++;
}