I have a webform that gets some hidden form fields set based on the referring URL. Within hook_form_alter, I can successfully set the hidden values with $form[elements][NAME][‘#value’].
function MODULE_form_alter(&$form,DrupalCoreFormFormStateInterface $form_state, $form_id) { //Get referring Program path/URL $previousUrl = Drupal::request()->server->get('HTTP_REFERER'); if ($form_id == FORM_ID) { $prog = getLeadProgramContact($previousUrl); $form['elements']['referrer']['#value'] = $prog->field_email->value; $form['elements']['program_name']['#value'] = $prog->getName(); } }
However, when the form gets submitted, it appears hook_form_alter is called again, breaking everything, since the referring URL is now itself.
How can I permanently set hidden field values on initial form render? Anything I try with hook_form_alter seems to fail. I have also tried “#default_value”
Sponsored by SupremePR