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


23

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ử dpm(func_get_args())gợi ý, 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ì?


2
đảm bảo bạn có quyền truy cập Thông tin dành cho nhà phát triển dưới sự phát triển của mọi người / quyền
karthik

Câu trả lời:


28

Hãy chắc chắn rằng bạn có print $messages;trong page.tpl.phptập tin mẫu của bạn . Theo mặc định, devel (dpm) được định 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ẫu của bạn vì một số lý do không hiển thị nội dung của $messages, bạn sẽ không thấy gì cả.


13
  1. Đôi khi krumo($variable)có thể làm việc khi dpm($variable)không.

  2. Đôi khi print dpm($variable)có thể làm việc khi dpm($variable)không.

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

9

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 nên làm điều đó.


7
Đăng nhập là không cần thiết, nếu người dùng ẩn danh có quyền.
kiamlaluno

3
Quyền này có thể được tìm thấy tại 'admin / people / allow' trong 'Truy cập thông tin nhà phát triển.'
Citricguy

9

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.)


1
Đây là giải pháp tổng thể tốt nhất cho tôi.
rrirower

1
Cũng vô giá khi gỡ lỗi yêu cầu ajax.
Đêm giao thừa

8

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

dpm()mô tả lấy từ đây .

In một biến đến khu vực 'tin nhắn' của trang bằ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 mình. 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 hiện lại và nó sẽ hoạt động.


Nó vẫn như cũ. Tôi đã cài đặt và kích hoạt mô-đun phát, xóa tất cả bộ nhớ cache, chạy cron và vẫn dpm (func_get_args ()) không hiển thị bất cứ điều gì.
Jimmy

Bạn đang đặt ở dpm(func_get_args());đâu?
Chapabu

Trong tệp bootstrap.inc: dpm (func_get_args ()); $ Match = drupal_system_listing ("/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ mở rộng $ /", $ dir, 'name', 0); ...
Jimmy

Hãy thử thay đổi dpm(func_get_args());thành die(print_r(func_get_args());- bỏ qua Devel trong thời điểm này.
Chapabu

3
Nếu lệnh thứ hai được Chapabu đề xuất không thay đổi bất cứ điều gì, thì điều đó chỉ có nghĩa là mã không được gọi và bạn không bị ảnh hưởng bởi cùng một vấn đề.
Berdir

5

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'); 

3

Đ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 thì không còn lại.

Bạn có thể mở tab mạng và kiểm tra xem 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.


2

Đô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), vd

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), vd

$ 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 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).


1

Nếu chỉ một số dpm()cuộc gọi không hoạt động, nó có thể là do sự dpm()cố. 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ệ dpm(), bởi vì trang đang hiển thị tốt, không có WSOD hoặc một cái gì đó, chỉ là không có dpm()thông báo. 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 cố gắng 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)).

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.