public static function YamlFormElementStates::addConditionSubmit in YAML Form 8
Form submission handler for adding another condition.
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/ YamlFormElementStates.php, line 392
Class
- YamlFormElementStates
- Provides a form element to edit an element's #states.
Namespace
Drupal\yamlform\ElementCode
public static function addConditionSubmit(array &$form, FormStateInterface $form_state) {
// Get the form states element by going up one level.
$button = $form_state
->getTriggeringElement();
$element =& NestedArray::getValue($form, array_slice($button['#array_parents'], 0, -4));
// The $row_index is not sequential so we need to rebuild the value instead
// of just using an array_slice().
$row_index = $button['#row_index'];
$values = [];
foreach ($element['states']['#value'] as $index => $value) {
$values[] = $value;
if ($index == $row_index) {
$values[] = [
'selector' => '',
'trigger' => '',
'value' => '',
];
}
}
// Reset values.
$values = array_values($values);
// Set values.
$form_state
->setValueForElement($element['states'], $values);
NestedArray::setValue($form_state
->getUserInput(), $element['states']['#parents'], $values);
// Update the number of rows.
$form_state
->set(self::getStorageKey($element, 'number_of_rows'), count($values));
// Rebuild the form.
$form_state
->setRebuild();
}