Problem
I have an Article node with layout builder enabled for content author.
I have webform Subscribe newsletter with ajax enabled.
I add webform Subscribe newsletter to the node twice. So there are 2 same webform added to the node.
When I submit the second form, the confirmation message appear in the first webform.
Expected
Confirmation message should appear in second webform.
What I tried
I tried to change the id by using
function MY_MODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if (isset($form['#webform_id'])) {
$counter = _MY_MODULE_generate_webform_unique_id($form['#webform_id']);
if ($counter !== 0) {
$new_id = $form_id . '_' . $counter;
$form['#form_id'] = $new_id;
$form['#attributes']['id'] = $new_id;
$form['#form_wrapper_id'] = $form['#form_wrapper_id'] . '--' . $counter;
$content_wrapper = $form['#form_wrapper_id'] . '-content--' . $counter;
$wrapper_id = $form['#form_wrapper_id'] . '--' . $counter;
$prefix = '<span id="'. $content_wrapper .'"></span>' .
'<div id="' . $wrapper_id . '" class="webform-ajax-form-wrapper" data-effect="fade" data-progress-type="throbber">';
$form['#prefix'] = $prefix;
}
}
}
function _MY_MODULE_generate_webform_unique_id($webform_id) {
$static_var = &drupal_static(__FUNCTION__ . ':' . $webform_id);
if (!isset($static_var)) {
// generate contents of static variable
$static_var = 0;
}
else {
$static_var += 1;
}
return $static_var;
}
I can change the form ID, but the confirmation message still display in the first webform.
I saw similar in here https://drupal.stackexchange.com/a/272176/26797 but this is for custom form. Not sure how to apply it with webform.
Is there some mistake that I made or other approach?
Thank in advance.
Edit
For quick workaround, I currently change all form to display in Drupal modal dialog. So instead of form appear in the page, I put a link and user click the link to open the form. Not sure if this is a bug in webform or my custom code is messing up stuff. I will need to try this in vanilla Drupal later on.