it-swarm-vi.com

dpm () không hiển thị bất kỳ kết quả nào trên màn hình

Tôi có cùng một vấn đề như file_scan_directory () mất khoảng 10 giây để thực thi . Tôi vừa thử đề xuất dpm(func_get_args()), và thật không may, nó không hiển thị gì cho tôi.

Tôi đã xóa tất cả các bộ nhớ cache và chạy các tác vụ cron. Tôi đang thiếu gì?

23
Jimmy

Đảm bảo bạn có print $messages; Trong tệp mẫu page.tpl.php. Theo mặc định, devel (dpm) được cấu hình để in nội dung của nó trong vùng thông báo của trang web. Vì vậy, nếu một số lý do mẫu của bạn không hiển thị nội dung của $messages, Bạn sẽ không thấy gì cả.

28
svetlio
  1. Đôi khi krumo($variable) có thể hoạt động khi dpm($variable) không.

  2. Đôi khi print dpm($variable) có thể hoạt động khi dpm($variable) không.

    1. cũng có thể là giải pháp khi không còn print $messages trong page.tpl.php nữa. Có lẽ bạn có thể thêm nó trở lại.
13
leymannx

Bạn phải đăng nhập vào trang web Drupal, với quyền chính xác để truy cập Devel. Đăng nhập với tư cách quản trị viên sẽ làm điều đó.

9
Powdermonkey1850

Tôi rất muốn giới thiệu devel_debug_log . Nó đòi hỏi mô-đun phát, và nó cung cấp cho bạn hàm ddl (). ddl thêm một trang vào báo cáo của bạn trong cấu hình, vì vậy nó tương tự như in với cơ quan giám sát, nhưng bạn có một trang sạch đẹp nơi bạn có thể gửi tin nhắn gỡ lỗi của mình và không lo lắng về các điều kiện loại cuộc đua mà tin nhắn của bạn có thể bị xóa trước khi bạn có một cơ hội để xem chúng - hoặc, như trong trường hợp của bạn, các vấn đề chủ đề.

(Đây cũng là một công cụ hữu ích TUYỆT VỜI nếu bạn đang cố gắng xây dựng bất kỳ loại API nào, vì tất cả các yêu cầu đó sẽ không bao giờ hiển thị cho bạn bất kỳ loại tin nhắn dpm () nào.)

9
UnsettlingTrend

Đảm bảo rằng bạn đã kích hoạt và cài đặt mô-đun Develdpm() là một hàm được khai báo trong mô-đun này.

dpm() mô tả được lấy từ tại đây .

In một biến vào khu vực ‘tin nhắn của trang bằng cách sử dụng drupal_set_message (). Bạn có thể sử dụng chức năng này để theo dõi một hoặc nhiều biến khi bạn làm việc với mã đang chạy trang web của bạn. Bởi vì mô-đun Devel bây giờ đi kèm với Krumo, đầu ra nhỏ gọn và không phô trương.

dpm($input, $name = NULL)

Nếu, vì một số lý do, bạn không sử dụng Krumo, bạn có thể sử dụng tham số $ name để phân biệt giữa các lệnh gọi khác nhau đến dpm ().

Sau khi bạn đã tải xuống và kích hoạt Devel, hãy thử câu trả lời từ file_scan_directory () mất khoảng 10 giây để thực thi một lần nữa và nó sẽ hoạt động.

8
Chapabu

Nếu bạn muốn in nó từ bên trong một chức năng mà không cần chạm (hoặc có) một tệp mẫu, hãy thử điều này:

$nid = 3;
$node = node_load($nid);
dpm($node);
print theme('status_messages'); 
5
Gavin Mcdonough

Điều này đôi khi là kết quả của một tài nguyên trên trang trả về 404.

Drupal hiển thị trang 404 và thực hiện tìm nạp (và xóa) các tin nhắn từ phiên và đặt chúng trên trang 404 mà bạn không thấy. Sau đó, khi trang chính tìm nạp các tin nhắn, không còn lại.

Bạn có thể mở tab mạng và kiểm tra xem liệu có tài nguyên nào có trạng thái 404 không.

Một giải pháp dễ dàng ở đây là kích hoạt 404 nhanh bằng cách bỏ dòng này trong settings.php:

# drupal_fast_404();

Một giải pháp tốt khác ở đây là sử dụng devel_debug_log theo đề xuất của SlakeFistcrunch.

3
Felix Eve

Đôi khi, tin nhắn có thể bị cắt hoặc không hoạt động trong trường hợp AJAX.

Phương pháp đáng tin cậy hơn là chỉ làm (sau đó loại bỏ sau khi kết thúc):

var_dump($data); die();

Hoặc bạn có thể sử dụng dd() (một phần của Devel), ví dụ:.

dd(func_get_args());

sau đó kiểm tra tệp nhật ký của bạn (trong thư mục tạm thời), ví dụ:.

$ tail -f /tmp/drupal_debug.txt

Sử dụng phương pháp trên sẽ thuận tiện hơn, nhanh hơn và nó có thể hỗ trợ AJAX hoặc yêu cầu khác mà không phá vỡ kết xuất trang web hiện tại.


Nếu bạn vẫn thích dpm(), hãy thử sử dụng kint() (bật mô hình con Kint đi kèm cho các bản in biến đẹp này).

2
kenorb

Nếu chỉ một số cuộc gọi dpm() không hoạt động, đó có thể là do dpm() bị treo. Tôi thấy nó xảy ra trong kịch bản sau đây trong một trình xử lý biểu mẫu tùy chỉnh:

function mymodule_formid_submit($form, &$form_state) {
  dpm($form_state);
}

Tôi tin rằng tình trạng lỗi đã được xử lý bởi một trình xử lý ngoại lệ trong dpm(), bởi vì trang đang hiển thị tốt, không có WSOD hoặc cái gì đó, chỉ là không có thông báo dpm(). Lỗi có thể không được phát hiện đệ quy, bởi vì sử dụng ddl($form_state) thay vào đó dẫn đến trình duyệt tối đa hóa bộ nhớ khi xem đối tượng tương ứng trong báo cáo được tạo bởi mô đun Nhật ký gỡ lỗi Devel.

Như một giải pháp thay thế, hãy thử chỉ in một phần (có liên quan) của đối tượng, như dpm($form_state['values']) hoặc dpm(array_keys($form_state)).

1
tanius