Điểm:0

Gọi lại AJAX không được kích hoạt trong hook_form_alter()

lá cờ br

Trong Drupal 7, khách hàng muốn thêm một nút vào user_profile_form. Vì vậy, trong mô-đun tùy chỉnh của mình, tôi tạo nút và lệnh gọi lại đi kèm với nó. Nhưng trong khi nút xuất hiện trên biểu mẫu, tôi không thấy bằng chứng nào về việc gọi lại đang được kích hoạt.

function member_form_alter(&$form, &$form_state, $form_id) {
  nếu ($form_id == "user_profile_form") {
     
  $form['send_reset'] = mảng(
          '#type' => 'nút',
          '#prefix' => "<div id='reset-div'>",
          '#suffix' => "</div>",
          '#value' => "Đặt lại thành viên",
          '#ajax' => [
            'gọi lại' => 'thành viên_reset_user',
            'trình bao bọc' => 'đặt lại div',
            'sự kiện' => 'gửi', // nhấp chuột, v.v.
          ],
          '#trọng lượng' => -150,
          '#attributes' => mảng(
            'id' => mảng ('đặt lại-hủy')
          ),
        );
}
hàm member_reset_user($form, &$form_state) {
  chết();  
  cố gắng {
    my_user_function():
    cơ quan giám sát ('thành viên', 'thiết lập lại người dùng', WATCHDOG_NOTICE);
  }
  bắt (Ngoại lệ $e) {
    cơ quan giám sát ('thành viên', 'đặt lại không thành công', WATCHDOG_ERROR);
  }
  trả về biểu mẫu $;
}

Html do Drupal tạo đề xuất chức năng gửi.

  <div id="reset-div"><input id="reset-cancel" type="submit" name="op" value="Reset member" class="form-submit"></div>

Vì tôi không tạo các phần tử biểu mẫu mới trong lệnh gọi lại của mình mà chỉ phát hành một chức năng tùy chỉnh, nên tôi không thể biết mình đang làm gì sai. Tôi đã xem xét điều này quá lâu.

apaderno avatar
lá cờ us
Tôi coi cuộc gọi lại AJAX không được gọi và khi bạn mong đợi. Bạn đã làm gì để đảm bảo cuộc gọi lại được gọi?
apaderno avatar
lá cờ us
(Có một lỗi đánh máy trong mã đó và một khối mã không ở đúng vị trí của nó. Chúng không phải là lý do khiến lệnh gọi lại không được gọi, nhưng mã được hiển thị không phải là thứ bạn đang thực sự sử dụng, có thể.)
apaderno avatar
lá cờ us
Để làm rõ, vì sự kiện AJAX không được đặt cho nút đó, nên sự kiện mặc định là *mousedown*. Cuộc gọi lại AJAX chỉ được gọi trong sự kiện JavaScript đó.
lá cờ br
@apanderno Thx vì đã phản hồi. Dòng gọi lại đầu tiên chắc chắn có die(). Sửa đổi goof ở trên. Sự kiện AJAX lúc đầu đã làm tôi khó chịu, nhưng tôi đã xem xét và thêm sự kiện để nhấp, gửi. Vẫn không kích hoạt.

Đă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.