You are here

public static function Tablefield::submitCallbackRebuild in TableField 8.2

Submit handler.

Parameters

array $form: Form array.

\Drupal\Core\Form\FormStateInterface $form_state: Form state object.

File

src/Element/Tablefield.php, line 269

Class

Tablefield
Provides a form element for tabular data.

Namespace

Drupal\tablefield\Element

Code

public static function submitCallbackRebuild(array $form, FormStateInterface $form_state) {

  // Check what triggered this. We might need to rebuild or to import.
  $triggering_element = $form_state
    ->getTriggeringElement();
  $id = implode('-', array_slice($triggering_element['#parents'], 0, -3, TRUE));
  $parents = array_slice($triggering_element['#parents'], 0, -2, TRUE);
  $value = $form_state
    ->getValue($parents);
  if (isset($triggering_element['#name']) && $triggering_element['#name'] == 'tablefield-rebuild-' . $id || isset($triggering_element['#name']) && $triggering_element['#name'] == 'tablefield-addrow-' . $id) {
    $parents[] = 'rebuild';
    if (isset($triggering_element['#name']) && $triggering_element['#name'] == 'tablefield-addrow-' . $id) {
      $value['rebuild']['rows']++;
    }
    NestedArray::setValue($form_state
      ->getStorage(), $parents, $value['rebuild']);
    \Drupal::messenger()
      ->addStatus(t('Table structure rebuilt.'), FALSE);
  }
  elseif (isset($triggering_element['#name']) && $triggering_element['#name'] == 'tablefield-import-' . $id) {

    // Import CSV.
    $imported_tablefield = static::importCsv($id);
    if ($imported_tablefield) {
      $form_state
        ->setValue($parents, $imported_tablefield);
      $input = $form_state
        ->getUserInput();
      NestedArray::setValue($input, $parents, $imported_tablefield);
      $form_state
        ->setUserInput($input);
      $parents[] = 'rebuild';
      NestedArray::setValue($form_state
        ->getStorage(), $parents, $imported_tablefield['rebuild']);
    }
  }
  $form_state
    ->setRebuild();
}