Điểm:0

Sử dụng ajax để lưu dạng hộp thoại/phương thức thay vì tải lại trang

lá cờ kr

Tôi đang tìm cách lưu biểu mẫu hộp thoại & phương thức thông qua ajax thay vì chuyển hướng người dùng sau khi gửi biểu mẫu. Ajax là lãnh thổ khá xa lạ với tôi.

Tôi đã tìm thấy một số chủ đề thú vị ở đây rồi:

Hộp thoại giao diện người dùng jQuery cố gắng gửi biểu mẫu bằng AJAX chuyển hướng tôi đến trang biểu mẫu thực tế thay vì gửi AJAX

Làm cách nào để đóng phương thức sau khi gửi biểu mẫu?

Tôi đã thử tất cả các câu trả lời được hiển thị ở đó, nhưng không may mắn. Tôi đang sử dụng Drupal 9 và có vẻ như mã có thể hơi khác giữa phiên bản 8 và 9. Tôi đã thử tìm hiểu các trang tài liệu trên drupal.org nhưng dường như không tìm thấy bất cứ điều gì hữu ích cho trường hợp của tôi.

Điểm:0
lá cờ kr

Đối với bất kỳ ai quan tâm, tôi đã làm cho nó hoạt động với mã sau trong mô-đun 'cs_modals' tùy chỉnh của mình:

 /**
 * Triển khai hook_form_alter().
 */
function cs_modals_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
    $request = \Drupal::request();
    // Kiểm tra xem có yêu cầu Ajax không.
    nếu ($request->isXmlHttpRequest()) {
      $form['actions']['submit']['#ajax']['callback'] = '_cs_modals_id_submit_ajax_callback';
    }
}

/**
 * Gọi lại Ajax tùy chỉnh.
 */
function _cs_modals_id_submit_ajax_callback(mảng &$form, FormStateInterface $form_state) {
  // Nếu form hợp lệ thì đóng hộp thoại.
  if (!$form_state->hasAnyErrors()) {
    $response = new \Drupal\Core\Ajax\AjaxResponse();
    $response->addCommand(new \Drupal\Core\Ajax\CloseDialogCommand());
    trả lại phản hồi $;
  }
  // Nếu không thì gọi lại #ajax mặc định.
  $form_object = $form_state->getFormObject();
  $response = $form_object->submitAjaxForm($form, $form_state) ;
  trả lại phản hồi $;
}

Bây giờ, mọi biểu mẫu trong một phương thức được gửi qua Ajax. Bây giờ tôi đang tìm cách tự động đóng phương thức khi biểu mẫu được gửi thành công hoặc hiển thị thông báo lỗi thông qua Ajax khi một hoặc nhiều trường bắt buộc không có giá trị. Bất kỳ trợ giúp về điều đó sẽ được đánh giá cao!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.