Điểm:1

Cách tìm mô-đun đang cập nhật nút của tôi sau khi chèn

lá cờ jp

Khi cố gắng tạo một cuốn sách mới, tôi nhận được thông báo sau:

Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: Vi phạm ràng buộc về tính toàn vẹn: 1062 Mục nhập trùng lặp '53' cho khóa 'PRIMARY': CHÈN VÀO "sách"

Vấn đề ở đây là cuốn sách được thêm hai lần. Do đó, cuốn sách được tạo một lần và cho cuốn khác, tôi nhận được thông báo ở trên.

Vì một số lý do, việc tạo nút được cập nhật trực tiếp sau khi tạo. Điều này không xảy ra với cài đặt sạch với mô-đun sách. Vì vậy, nó phải là một trong các mô-đun tùy chỉnh hoặc đóng góp của tôi thực hiện việc này. Do đó, mô-đun sách đưa ra lỗi này.Để tìm ra vấn đề đến từ đâu, tôi tự hỏi làm thế nào tôi có thể xem mô-đun nào đang cập nhật nút sau khi chèn.

Có phải cách duy nhất mà hook_node_update được gọi là sử dụng tiết kiệm() lệnh trong mã? Tôi đang cố gắng tìm cái này vào lúc này nhưng không có mô-đun nào sử dụng lệnh này có vẻ là vấn đề.

Ai đó có thể giúp tôi thực hiện bước tiếp theo trong việc gỡ lỗi sự cố này không?

leymannx avatar
lá cờ ne
Kiểm tra các mô-đun đóng góp và tùy chỉnh cho hook_entity_insert, hook_book_insert hook_entity_presave, hook_book_presave, v.v. và $entity->save(), $book->save(), v.v.
Joost avatar
lá cờ jp
Vì vậy, tôi tìm `save()` ở bên cạnh một trong các móc phải không?
leymannx avatar
lá cờ ne
À đúng rồi, save() trong một số hook_node_update tùy chỉnh nghe có vẻ đáng ngờ. Điều này có lẽ nên xảy ra trong hook_node_presave chỉ với set()
Joost avatar
lá cờ jp
Tôi đã xem xét tất cả các mô-đun của mình nhưng không tìm thấy `save()` bị đặt sai vị trí. Có thể làm theo cách khác không? Tôi có thể tìm ra những mô-đun...đoạn mã nào đang cập nhật nút của mình không?
leymannx avatar
lá cờ ne
Không có ý tưởng ngay bây giờ. Có lẽ tôi sẽ bắt đầu tắt từng mô-đun tùy chỉnh, sau đó tiếp tục với đóng góp, cho đến khi bạn tìm ra thủ phạm.
Joost avatar
lá cờ jp
Tôi sẽ thử cách tiếp cận đó cảm ơn
Điểm:5
lá cờ tr

You could implement hook_module_implements_alter to list all modules that implement a specific hook this way:

function myModule_module_implements_alter(&$implementations, $hook) {
  if ($hook === 'entity_insert') {
    // List of all modules names that implement hook_entity_insert.
    dump(array_keys($implementations));
  }
}

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