public static function WebformMultiple::addItemsSubmit in Webform 8.5
Same name and namespace in other branches
- 6.x src/Element/WebformMultiple.php \Drupal\webform\Element\WebformMultiple::addItemsSubmit()
Webform submission handler for adding more items.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
File
- src/
Element/ WebformMultiple.php, line 797
Class
- WebformMultiple
- Provides a webform element to assist in creation of multiple elements.
Namespace
Drupal\webform\ElementCode
public static function addItemsSubmit(array &$form, FormStateInterface $form_state) {
// Get the webform list element by going up two levels.
$button = $form_state
->getTriggeringElement();
$element =& NestedArray::getValue($form, array_slice($button['#array_parents'], 0, -2));
// Add more items to the number of items.
$number_of_items_storage_key = static::getStorageKey($element, 'number_of_items');
$number_of_items = $form_state
->get($number_of_items_storage_key);
$more_items = (int) $element['add']['more_items']['#value'];
$form_state
->set($number_of_items_storage_key, $number_of_items + $more_items);
// Reset values.
$items = !empty($element['items']['#value']) ? array_values($element['items']['#value']) : [];
$element['items']['#value'] = $items;
$form_state
->setValueForElement($element['items'], $items);
NestedArray::setValue($form_state
->getUserInput(), $element['items']['#parents'], $items);
$action_key = static::getStorageKey($element, 'action');
$form_state
->set($action_key, TRUE);
// Rebuild the form.
$form_state
->setRebuild();
}