Vấn đề
Tôi có nút Bài viết với trình tạo bố cục được bật cho tác giả nội dung.
tôi có biểu mẫu web Theo dõi bản tin đã bật ajax.
Tôi thêm biểu mẫu web Đăng ký bản tin vào nút hai lần. Vì vậy, có 2 biểu mẫu web giống nhau được thêm vào nút.
Khi tôi gửi biểu mẫu thứ hai, thông báo xác nhận sẽ xuất hiện trong biểu mẫu web đầu tiên.
Hy vọng
Thông báo xác nhận sẽ xuất hiện trong biểu mẫu web thứ hai.
Những gì tôi đã cố gắng
Tôi đã cố gắng thay đổi id bằng cách sử dụng
function MY_MODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if (isset($form['#webform_id'])) {
$count = _MY_MODULE_generate_webform_unique_id($form['#webform_id']);
nếu ($bộ đếm !== 0) {
$new_id = $form_id . '_' . bộ đếm $;
$form['#form_id'] = $new_id;
$form['#attributes']['id'] = $new_id;
$form['#form_wrapper_id'] = $form['#form_wrapper_id'] . '--' . bộ đếm $;
$content_wrapper = $form['#form_wrapper_id'] . '-Nội dung--' . bộ đếm $;
$wrapper_id = $form['#form_wrapper_id'] . '--' . bộ đếm $;
$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;
}
}
}
hàm _MY_MODULE_generate_webform_unique_id($webform_id) {
$static_var = &drupal_static(__FUNCTION__ . ':' . $webform_id);
if (!isset($static_var)) {
// tạo nội dung của biến tĩnh
$static_var = 0;
}
khác {
$static_var += 1;
}
trả về $static_var;
}
Tôi có thể thay đổi ID biểu mẫu nhưng thông báo xác nhận vẫn hiển thị trong biểu mẫu web đầu tiên.
Tôi thấy tương tự ở đây https://drupal.stackexchange.com/a/272176/26797 nhưng đây là cho hình thức tùy chỉnh. Không chắc chắn làm thế nào để áp dụng nó với biểu mẫu web.
Có một số sai lầm mà tôi đã thực hiện hoặc cách tiếp cận khác?
Cảm ơn trước.
Chỉnh sửa
Để giải quyết nhanh chóng, tôi hiện đang thay đổi tất cả biểu mẫu để hiển thị trong hộp thoại phương thức Drupal. Vì vậy, thay vì biểu mẫu xuất hiện trong trang, tôi đặt một liên kết và người dùng nhấp vào liên kết để mở biểu mẫu. Không chắc đây là lỗi trong biểu mẫu web hay mã tùy chỉnh của tôi đang làm rối tung mọi thứ. Tôi sẽ cần thử điều này trong vanilla Drupal sau này.