I cannot determine why the form state seems to fail to get the values of the checkboxes on a form I'm building.
In my buildForm()
, after submission, I am returning a result set. Each result that is built includes a checkbox form element.
$form['main_container']['grid'] = [
'#type' => 'container',
];
foreach ($title_list as $title => $row) {
//...some code here...
$form['main_container']['grid'][$row['div_id']] = [
'#type' => 'fieldset',
'#collapsible' => FALSE,
'#attributes' => [
'class' => [
'grid-item-fieldset',
],
'id' => $row['div_id'] . '-fieldset',
],
];
$form['main_container']['grid'][$row['div_id']][$row['cn'] . '-selector'] = [
'#type' => 'checkbox',
'#return_value' => $row['div_id'],
'#attributes' => [
'class' => [
'item-selector',
],
'id' => $row['div_id'] . '-selector',
'name' => 'cn-' . $row['cn'],
],
'#default_value' => $row['div_id'],
];
}
With this rendering, I tried to get the value using $form_state->getValue($row['cn'] . '-selector);
to get the value after submission and all I can get is NULL
, despite the fact that the UI of the form confirms the boxes are checked.
I have also tried adding the #tree property to the 'grid' element (shown below), then using $form_state->getValue([$row['div_id'], $row['cn'] . '-selector']);
and this also resulted in NULL
.
$form['main_container']['grid'] = [
'#type' => 'container',
'#tree' => TRUE,
];
When I dump the $form_state->getValues()
with Kint using Devel after the form's been rebuilt, I can see all the checkbox values, but they all have the value of 0
, despite their value being set.
Does anyone have any insight into why I'm unable to get these values from the form state despite them existing in the form and being checked in the UI?