Điểm:-1

gọi lại tùy chỉnh drupal ở dạng chỉnh sửa nút không kích hoạt

lá cờ eg

Tôi còn khá mới với drupal, tôi đã thêm nút tùy chỉnh vào một trang chỉnh sửa loại nội dung, khi tôi nhấp vào nút đó, tôi muốn gọi một chức năng nhưng có vẻ như nó không gọi chức năng khi tôi nhìn thấy bảng điều khiển, tôi thấy drupa ajax lỗi xảy ra bất cứ khi nào tôi nhấp vào nút. xin vui lòng cho tôi biết những gì tôi đang làm sai ở đây.

function mymodule_form_node_program_edit_form_alter(&$form, FormStateInterface $form_state) {
  $form['áp dụng'] = mảng(
    '#type' => 'gửi',
    '#value' => t('Áp dụng'),
    '#cân nặng' => '9',
    '#executes_submit_callback' => SAI,
    '#limit_validation_errors' => mảng(),
    '#ajax' => mảng (
      'gọi lại' => 'button_test_callback',
    ),
  );
}
    chức năng button_test_callback(mảng &$form, \Drupal\Core\Form\FormStateInterface $form_state) {
  echo '<script>alert("Chào mừng")</script>';
  trả về biểu mẫu $;
}

lỗi tôi đang nhận được:

không bị bắt Drupal.AjaxError {thông báo: "\nĐã xảy ra lỗi HTTP AJAX.\nMã kết quả HTTP: 50â¦\Core\DrupalKernel->handle(Object) (Dòng: 19)\n", tên: "AjaxError"} thông báo: "\nĐã xảy ra lỗi AJAX HTTP.\nMã kết quả HTTP: 500\nThông tin gỡ lỗi sau.\nĐường dẫn: /node/680911/edit?destination=/admin/content&ajax_form=1\nStatusText: error\nResponseText: Trang web gặp phải lỗi lỗi không mong muốn. Vui lòng thử lại sau.Symfony\Component\HttpKernel\Exception\HttpException: Lệnh gọi lại #ajax được chỉ định trống hoặc không thể gọi được.trong Drupal\Core\Form\FormAjaxResponseBuilder->buildResponse() (dòng 67 của core/lib/Drupal/Core/Form/FormAjaxResponseBuilder.php). Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber->onException(Object, 'kernel.Exception', Object)\ncall_user_func(Array, Object, 'kernel.Exception', Object) (Dòng: 111)\nDrupal\Component\EventDispatcher\ ContainerAwareEventDispatcher->dispatch('kernel.Exception', Object) (Dòng: 227)\nSymfony\Component\HttpKernel\HttpKernel->handleException(Object, Object, 1) (Dòng: 79)\nSymfony\Component\HttpKernel\HttpKernel- >xử lý(Đối tượng, 1, 1) (Dòng: 67)\nDrupal\simple_oauth\HttpMiddleware\BasicAuthSwap->xử lý(Đối tượng, 1, 1) (Dòng: 57)\nDrupal\Core\StackMiddleware\Session->xử lý(Đối tượng , 1, 1) (Dòng: 47)\nDrupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Dòng: 106)\nDrupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1 ) (Dòng: 85)\nDrupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Dòng: 49)\nAsm89\Stack\Cors->handle(Object, 1, 1) (Dòng: 50) \nDrupal\ban\BanMiddleware->handle(Object, 1, 1) (Dòng: 47)\nDrupal\Core\StackMiddleware\ReverseProxyMiddleware->han dle(Object, 1, 1) (Dòng: 52)\nDrupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Dòng: 23)\nStack\StackedHttpKernel->handle(Object, 1, 1) (Dòng: 708)\nDrupal\Core\DrupalKernel->xử lý(Đối tượng) (Dòng: 19)\n"

Điểm:0
lá cờ de

Bạn đang sử dụng định nghĩa gọi lại D7. Nó cần được xác định là gọi lại D8+. Vì vậy, điều này:

chức năng button_test_callback($form, &$form_state) {

Nên thế này:

chức năng button_test_callback(mảng &$form, \Drupal\Core\Form\FormStateInterface $form_state) {
vyshnavi avatar
lá cờ eg
tôi đổi thành cái này vẫn gặp lỗi tương tự, có vẻ như chức năng button_test_callback không được gọi
Jaypan avatar
lá cờ de
Tôi đã cập nhật mã, nó thiếu dấu gạch chéo về phía trước, vì vậy bạn nên thử mã đã cập nhật. Ngoài ra, tập tin `button_test_callback()` nằm trong tập tin nào?
vyshnavi avatar
lá cờ eg
nó vẫn không hoạt động, button_test_callback nằm trong cùng một tệp. tôi muốn thay đổi giá trị của trường nút khi tôi nhấp vào nút tùy chỉnh trong biểu mẫu chỉnh sửa nút mà không gửi biểu mẫu chỉnh sửa nút
Jaypan avatar
lá cờ de
"trong cùng một tệp"
vyshnavi avatar
lá cờ eg
đó là tệp mô-đun tùy chỉnh, course_program.module
Jaypan avatar
lá cờ de
Ok, điều đó sẽ làm việc sau đó. Vui lòng cập nhật bài đăng gốc để hiển thị mã hiện tại của bạn.
vyshnavi avatar
lá cờ eg
tôi đã cập nhật mã, tôi nhận được Uncaught Drupal.AjaxError như tôi đã đề cập trong câu hỏi bất cứ khi nào tôi nhấp vào nút.
Jaypan avatar
lá cờ de
Nếu đó là mã hiện tại của bạn, thì bạn cần trả về một giá trị từ lệnh gọi lại ajax.
vyshnavi avatar
lá cờ eg
bạn có thể đưa ra một ví dụ không ?
Jaypan avatar
lá cờ de
Để kiểm tra, hãy thêm `return $form;` vào lệnh gọi lại ajax của bạn.
vyshnavi avatar
lá cờ eg
tôi đã thêm biểu mẫu trả lại và tôi cũng đã cập nhật mã trong câu hỏi, nhưng vẫn không kích hoạt chức năng, tôi vẫn gặp lỗi ajax trong bảng điều khiển
Jaypan avatar
lá cờ de
Cuộc gọi `echo` đó có thể gây ra sự cố cho bạn. Bạn đã thử mà không có điều đó?
vyshnavi avatar
lá cờ eg
Hãy để chúng tôi [tiếp tục cuộc thảo luận này trong cuộc trò chuyện](https://chat.stackexchange.com/rooms/128913/discussion-between-vyshnavi-and-jaypan).
vyshnavi avatar
lá cờ eg
hii jaypan, sau khi cài đặt lại tiếng vang, lỗi không xuất hiện nhưng tôi muốn thay đổi giá trị trường $form['field_text_plain']['widget'][0]['value']['#value'] = '75433g'; nhưng nó không hiển thị tôi có cần gửi lại giá trị không?
Jaypan avatar
lá cờ de
Chào mừng bạn đến với Drupal Answers - đây là trang web định dạng một câu hỏi và một câu trả lời. Câu hỏi về cuộc gọi lại trống của bạn đã được giải quyết và do đó, câu hỏi bạn vừa hỏi là một câu hỏi mới. Vui lòng đánh dấu câu hỏi này là đã được giải quyết, sau đó mở một chủ đề mới cho vấn đề đó.
vyshnavi avatar
lá cờ eg
ohh chắc chắn rồi, cảm ơn vì sự giúp đỡ của bạn :)

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