dpm () не відображає жодних результатів на екрані


23

У мене така ж проблема, як виконання файлу file_scan_directory () займає близько 10 секунд . Я просто спробував dpm(func_get_args())пропозицію, і, на жаль, вона мені нічого не показує.

Я очистив усі кеші та запустив завдання cron. Що я пропускаю?


2
переконайтеся, що у вас є дозволи на доступ до інформації розробника під розробленням людей / дозволів
karthik

Відповіді:


28

Переконайтеся , що у вас є print $messages;у вашому page.tpl.phpфайлі шаблону. За замовчуванням, роз (розпадів в хвилину) виконаний з можливістю друку вмісту він знаходиться в області повідомлень на сайті. Так що, якщо ваш шаблон за якою - то причини не надає вміст $messages, ви нічого не побачите.


13
  1. Іноді krumo($variable)може працювати, коли dpm($variable)ні.

  2. Іноді print dpm($variable)може працювати, коли dpm($variable)ні.

    1. не може бути рішенням , коли їсти не print $messagesв вашому page.tpl.phpбільше. Може бути , ви можете додати його назад.

9

Ви повинні увійти на сайт Drupal з правильними дозволами на доступ до Devel. Увійдіть, як це повинен зробити адміністратор.


7
Увійти в систему не потрібно, якщо анонімні користувачі мають відповідний дозвіл.
kiamlaluno

3
Цей дозвіл можна знайти в розділі "admin / people / permissions" у розділі "Доступ до інформації розробника".
Citricguy

9

Я дуже рекомендую devel_debug_log . Для цього потрібен модуль devel, і він дає вам функцію ddl (). ddl додає сторінку до своїх звітів за конфігурацією, тому вона схожа на друк для сторожової собаки, але у вас є приємна чиста сторінка, на якій ви можете відправляти повідомлення про налагодження, і не турбуйтеся про умови перегонів, коли ваші повідомлення можуть бути очищені до того, як у вас з'явиться шанс їх побачити - або, як у вашому випадку, питання теми.

(Це також є надзвичайно корисним інструментом, якщо ви намагаєтеся будувати з будь-якої API, так як всі ці запити ніколи не покаже вам будь-якої розпадів за хвилину () повідомлень.)


1
Це було найкращим загальним рішенням для мене.
rrirower

1
Також безцінний при налагодженні запитів ajax.
Фелікс Єва

8

Переконайтеся , що ви включили і встановили Devel модуль , як dpm()це функція , оголошена в цьому модулі.

dpm()опис, взятий звідси .

Друкує змінну в області 'повідомлення' сторінки за допомогою drupal_set_message (). Ви можете використовувати цю функцію для відстеження однієї або декількох змінних під час роботи над кодом, на якому працює ваш сайт. Оскільки модуль Devel тепер поставляється з Krumo, вихід компактний і ненав’язливий.

dpm($input, $name = NULL)

Якщо з якоїсь причини ви не використовуєте Krumo, ви можете використовувати параметр $ name, щоб розрізняти різні виклики до dpm ().

Після того, як ви завантажили і включений Devel, спробуйте відповідь від file_scan_directory () займає близько 10 секунд , щоб виконати ще раз , і він повинен працювати.


Він залишається тим же самим . Я встановлений і включений Devel модуль, очищені всі кеші, працювати хрон і до сих пір DPM (func_get_args ()) нічого не показує.
Джиммі

Куди кладеш dpm(func_get_args());?
Чапабу

У файлі bootstrap.inc: dpm (func_get_args ()); $ match = drupal_system_listing ("/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ extension $ /", $ dir, 'name', 0); ...
Джиммі

Спробуйте перейти dpm(func_get_args());на die(print_r(func_get_args());обхід Devel на даний момент.
Чапабу

3
Якщо друга команда, рекомендована Chapabu, нічого не змінює, то це просто означає, що код не викликається, і на вас не впливає одна і та ж проблема.
Бердір

5

Якщо ви хочете, щоб роздрукувати його зсередини функції, не торкаючись (або з) файл шаблону, спробуйте зробити наступне:

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

3

Іноді це є результатом ресурсу на сторінці, яка повертає 404.

Drupal виводить сторінку 404 і тим самим виймає (і очищає) повідомлення з сеансу та розміщує їх на 404 сторінці, яку ви не бачите. Потім, коли головна сторінка отримує повідомлення, є ні вліво.

Ви можете відкрити вкладку мережі і переконайтеся в тому, які ресурси є 404 статус.

Просте рішення тут для того, щоб швидко 404 Розкоментувати цю лінію в settings.php:

# drupal_fast_404();

Іншим хорошим рішенням тут є використання devel_debug_log як це було запропоновано SlakeFistcrunch.


2

Іноді повідомлення може бути вирізане або не спрацює у випадку AJAX.

Більш надійний спосіб, щоб зробити тільки (а потім видалити після фінішу):

var_dump($data); die();

Або ви можете використовувати dd()(частина Devel, а), наприклад ,

dd(func_get_args());

потім перевірте свій файл журналу (у темп-папці), наприклад

$ tail -f /tmp/drupal_debug.txt

Використовуючи вище метод зручніше, швидше, і він може підтримувати AJAX або інший запит, не порушуючи поточну візуалізацію сайту.


Якщо ви до цих пір подобається dpm(), спробуйте також з допомогою kint()(включити додається Kint подмодуль для них досить друку змінних).


1

Якщо лише деякі dpm()дзвінки не працюють, це може бути наслідком dpm()збоїв. Я бачив, що це відбувається за наступним сценарієм у користувальницькій обробці форми подання:

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

Я вважаю, що стан помилки сприйняв обробник винятків dpm(), тому що на сторінці відображалось нормально, немає WSOD або чогось іншого, також немає жодного dpm()повідомлення. Помилка, ймовірно, не виявлена ​​рекурсія, тому що використання ddl($form_state)натомість призвело до того, що браузер максимізував пам'ять під час перегляду відповідного об’єкта у звіті, створеному модулем журналу налагодження Devel.

Для вирішення спробуйте надрукувати лише (відповідну) частину об'єкта, як-от dpm($form_state['values'])або dpm(array_keys($form_state)).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.