Skip to content

Commit 300f0ae

Browse files
authored
Merge pull request #98 from systopia/correct-default-value-for-disabled-radios
Ensure the correct default value is used for disabled radios elements
2 parents 5a0ffbd + c44e39a commit 300f0ae

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/Form/Control/Callbacks/OptionValueCallbacks.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,12 @@ public static function validate(array $element, FormStateInterface $formState):
5454
public static function value(array $element, $input, FormStateInterface $formState) {
5555
$defaultUsed = FALSE;
5656
if (FALSE === $input) {
57-
$input = $element['#default_value'] ?? NULL;
57+
if (array_key_exists('#_actual_default_value', $element)) {
58+
$input = $element['#_actual_default_value'];
59+
}
60+
else {
61+
$input = $element['#default_value'] ?? NULL;
62+
}
5863
$defaultUsed = TRUE;
5964
}
6065

src/Form/Control/RadiosArrayFactory.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,12 @@ public function createFormArray(
5858

5959
if (is_bool($form['#default_value'] ?? NULL)) {
6060
// If default value is a boolean, the corresponding radio is not selected.
61+
$form['#_actual_default_value'] = $form['#default_value'];
6162
$form['#default_value'] = $form['#default_value'] ? '1' : '0';
6263
}
6364
elseif (0 === ($form['#default_value'] ?? NULL)) {
6465
// If default value is 0, the corresponding radio is not selected.
66+
$form['#_actual_default_value'] = $form['#default_value'];
6567
$form['#default_value'] = '0';
6668
}
6769

0 commit comments

Comments
 (0)