Điểm:0

Drupal::messenger() không hoạt động trong chức năng tắt máy

lá cờ sa

Đôi khi tôi cần sử dụng chức năng tắt máy. Đây là một ví dụ ngu ngốc:

...
drupal_register_shutdown_function('display_message');
...

hàm display_message() {
  Drupal::messenger()->addMessage('Xin chào thế giới');
}

Hiện tại có thể hiển thị thông báo này không, nó không hoạt động (ngay cả khi làm mới trang tiếp theo)?

Theo yêu cầu, tôi sẽ giải thích lý do tại sao tôi cần sử dụng chức năng tắt máy.

trường hợp sử dụng của tôi:

Chúng tôi đang ở trong presave móc của nút A vừa có trạng thái tùy chỉnh mới (cần được lưu), giả sử trạng thái 5.

Khi loại nút này đạt trạng thái 5, tôi cần lưu/cập nhật nút khác nút B chứa tham chiếu đến nút A.

Trong presave móc của nút B, tính toán được thực hiện bằng cách sử dụng giá trị của trạng thái này... điều này có nghĩa là trạng thái của nút A phải được lưu trước khi bắt đầu tính toán.

Đây là lý do tại sao tôi trì hoãn việc tiết kiệm nút B có chức năng tắt máy nhưng không hiển thị tất cả các thông báo của người dùng cuối.

Bạn có thể lập luận rằng trong presave hook của nút A, tôi có thể gọi một hàm với trạng thái và nút A làm tham số sẽ thực hiện công việc; nhưng có nhiều trao đổi/tham chiếu như thế này và để tránh mã spaghetti, tôi đặt tất cả mã mô hình kinh doanh của mình vào chức năng lưu trước của hai loại nút đó.

Điểm:2
lá cờ cn

Đây là loại vô nghĩa. Bạn không thể hiển thị thông báo, trang đã được hiển thị. Và bạn không thể chuyển thư sang làm mới trang tiếp theo mà không có phiên. Nếu một phiên tồn tại, nó sẽ bị đóng ngay bây giờ. Nếu không có phiên, bạn không thể mở một phiên ngay bây giờ và gửi cookie phiên sau khi phản hồi đã kết thúc.

Baud avatar
lá cờ sa
Đây là lần đầu tiên tôi sử dụng tính năng này (ví dụ: để lưu một nút sau khi kết thúc tất cả các giao dịch DB). Những gì bạn đang nói có vẻ thông minh. Bạn có biết một cách khác để chạy một số mã ngay trước khi bắt đầu kết xuất nhưng sau khi kết thúc giao dịch DB không?
lá cờ cn
@Baud Có vẻ như bạn đang mắc hội chứng vấn đề XY - nếu tôi là bạn, tôi sẽ lùi lại một bước và cố gắng giải thích mục tiêu cuối cùng của bạn là gì, tại sao bạn cảm thấy cần thêm thông báo này vào một điểm cụ thể trong vòng đời của trang thay vì để nó tuân theo quy trình bình thường, đại loại như vậy. Nếu không, có thể bạn sẽ chỉ nhận được những câu trả lời như thế này và mặc dù nó chính xác và hữu ích nhưng nó không giải quyết được vấn đề của bạn vì vấn đề chưa được hiểu đầy đủ
Baud avatar
lá cờ sa
@Clive Tôi đã cập nhật câu hỏi của mình... Tôi không chắc nó đủ rõ ràng.

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