You are here

public static function WebformTableSort::validateWebformTableSelectOrder in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Element/WebformTableSort.php \Drupal\webform\Element\WebformTableSort::validateWebformTableSelectOrder()

Validates webform_table_other.

File

src/Element/WebformTableSort.php, line 223

Class

WebformTableSort
Provides a webform element for a sortable table element.

Namespace

Drupal\webform\Element

Code

public static function validateWebformTableSelectOrder(&$element, FormStateInterface $form_state, &$complete_form) {

  // Get and sort checked values.
  $checked_values = [];
  foreach (Element::children($element) as $key) {
    if ($element[$key]['value']['#value']) {
      $checked_values[] = [
        'value' => $element[$key]['value']['#value'],
        'weight' => $element[$key]['weight']['#value'],
      ];
    }
  }
  uasort($checked_values, [
    'Drupal\\Component\\Utility\\SortArray',
    'sortByWeightElement',
  ]);

  // Set values.
  $values = [];
  foreach ($checked_values as $item) {
    $values[$item['value']] = $item['value'];
  }

  // Clear the element's value by setting it to NULL.
  $form_state
    ->setValueForElement($element, NULL);

  // Now, set the values as the element's value.
  $element['#value'] = $values;
  $form_state
    ->setValueForElement($element, $values);
}