krumo () / dpm () không hoạt động


8

Tôi có một mô-đun tùy chỉnh và một mẫu để thay đổi sự xuất hiện của các biểu mẫu gửi nút của mình, đó là những hướng dẫn này .

Mô-đun của tôi bao gồm ba chức năng:

  • Một hook_form_alter()hoạt động tốt
  • A hook_theme()không làm gì ngoài trả về một mảng, ngay cả khi bạn nhập mã khác trước đó return(không chắc đây có phải là do thiết kế không)
  • A hook_preprocess_HOOK()hiện đang trống

dpm()dường như không làm gì cả hook_preprocess_HOOK(), mặc dù krumo()trên cùng một loại công việc. Nó đặt một thông điệp Drupal đọc Array: [n] itemsnhưng không thể mở rộng hoặc kiểm tra được.

Trong mẫu của tôi, print_r($form);in ra mảng mẫu như mong đợi. dpm('self-aware roomba');đặt một thông điệp Drupal về "tự nhận phòng" như mong đợi. nhưng dpm($form); không làm gì và ném không có lỗi.

Tất cả mọi thứ ngoại trừ của tôi hook_form_alter()là chính xác như nó xuất hiện trong hướng dẫn liên kết. Tôi thậm chí đã thử kéo ra toàn bộ hook_form_alter()để xem nếu nó hoạt động mà không có nó; nó không

Điều gì có thể gây ra dpm()/ krumo()thất bại âm thầm?


mô-đun Devel được cài đặt? dpm () đến từ mô-đun Devel
Mohammad Ali Akbari

Có, Devel được cài đặt. dpm('self-aware roomba');sẽ không hoạt động khác và krumo()sẽ không quay trở lại Array: [n] items, nó sẽ gây ra lỗi PHP nghiêm trọng, khiến cho nhật ký của tôi không trống.
beth

vì vậy hãy đặt mã của bạn vào câu hỏi của bạn và để tôi tạo lại lỗi;)
Mohammad Ali Akbari

Nó hoàn toàn giống với mã trong hướng dẫn được liên kết. Sẽ hơi lâu để đăng tất cả trong cửa sổ câu hỏi. Tất cả các mã ở đây: drupal.org/node/1092122
beth

bạn đang thử dpm () ở chức năng nào (ở đâu)?
Mohammad Ali Akbari

Câu trả lời:


6

Tôi đã gặp phải một vấn đề trong đó dpm()và một số tin nhắn khác đã bị ăn theo yêu cầu 404 trong nền.

Giải trình:

Nếu dpm()hoặc drupal_set_message()được gọi trước khi các tin nhắn được in ra theme_status_messages(), thì bạn có thể thấy chúng trên cùng một trang.

Nếu dpm()hoặc drupal_set_message()được gọi sau theme_status_messages(), thì những tin nhắn đó sẽ bị trì hoãn $_SESSIONcho đến khi có yêu cầu tiếp theo theme_status_messages().

Một số loại yêu cầu KHÔNG kích hoạt theme_status_messages(). Ví dụ: một biểu mẫu gửi sẽ chỉ thực hiện xử lý biểu mẫu và sau đó thực hiện chuyển hướng, vì vậy các thông báo vẫn còn trong $_SESSION.

Ngoài ra, nó sẽ chỉ kích hoạt các yêu cầu của cùng một khách truy cập / khách hàng (đây là lý do tại sao nó được lưu trong phiên, đó là ứng dụng khách cụ thể).

Tuy nhiên, một số yêu cầu xảy ra trong nền làm kích hoạt theme_status_messages()và có thể ăn hết tin nhắn của bạn.

Trong trường hợp của tôi, đây là yêu cầu thiếu hình ảnh, dẫn đến các trang html 404 đầy đủ với các tin nhắn (và rõ ràng tôi không thể nhìn thấy bất kỳ điều nào trong số này).

Giải pháp:

Giải pháp là kích hoạt tính năng "nhanh 404".


Đó là một phần gỡ lỗi thực sự tốt, được thực hiện tốt. Vấn đề của tôi là tôi đã có một tệp SVG 404ing, không có trong phần mở rộng tệp mặc định. Cảm ơn cho một câu trả lời tuyệt vời!
John McCollum

Số phiếu lớn cho nghiên cứu của bạn, @zhilevan! Vì một số lý do, Fast 404 không giải quyết được điều này cho tôi vì một số lý do, nhưng đây chắc chắn là nguyên nhân, vì việc sửa lỗi 404 ngay lập tức khiến dpm () của tôi bắt đầu hiển thị.
joe_flash

1

kiểm tra này bạn của tôi

ob_start();
krumo($yourparameter);
$output = ob_get_contents();
ob_end_clean();
drupal_set_message($output);

Điều này hoạt động nhưng tôi nhận được một số phiên bản của cùng một thông điệp tường trình. Nếu tôi hiểu chính xác, tất cả những gì đang làm là thu thập kết quả đầu ra và sau đó kết xuất nó thông qua bộ đệm php? Có đúng không?
đá hoa cương

@marblegravy có, đúng
Yusef
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.