dpm () tidak menampilkan hasil apa pun di layar

23

Saya memiliki masalah yang sama dengan file_scan_directory () membutuhkan waktu sekitar 10 detik untuk dieksekusi . Saya hanya mencoba dpm(func_get_args())saran itu, dan sayangnya itu tidak menunjukkan apa-apa kepada saya.

Saya sudah membersihkan semua cache, dan menjalankan tugas cron. Apa yang saya lewatkan?

Jimmy
sumber
2
pastikan Anda memiliki izin untuk Mengakses Informasi Pengembang di bawah pengembangan orang / izin
karthik

Jawaban:

28

Pastikan Anda memiliki file templat print $messages;Anda page.tpl.php. Secara default, devel (dpm) dikonfigurasikan untuk mencetak kontennya di area pesan situs. Jadi jika template Anda karena alasan tertentu tidak membuat konten $messages, Anda tidak akan melihat apa pun.

svetlio
sumber
13
  1. Terkadang krumo($variable)mungkin berhasil ketika dpm($variable)tidak.

  2. Terkadang print dpm($variable)mungkin berhasil ketika dpm($variable)tidak.

    1. mungkin juga menjadi solusi ketika tidak ada lagi print $messagesdi Anda page.tpl.php. Mungkin Anda bisa menambahkannya kembali.
leymannx
sumber
9

Anda harus masuk ke situs Drupal, dengan izin yang benar untuk mengakses Devel. Masuk sebagai admin harus melakukannya.

Powdermonkey1850
sumber
7
Masuk tidak perlu, jika pengguna anonim memiliki izin yang tepat.
kiamlaluno
3
Izin ini dapat ditemukan di 'admin / orang / izin' di bawah 'Akses informasi pengembang.'
Citricguy
9

Saya sangat merekomendasikan devel_debug_log . Ini membutuhkan modul devel, dan memberi Anda fungsi ddl (). ddl menambahkan halaman ke laporan Anda dalam konfigurasi, jadi ini mirip dengan mencetak ke watchdog, tetapi Anda memiliki halaman bersih yang bagus di mana Anda dapat mengirim pesan debug Anda, dan tidak khawatir tentang kondisi jenis ras di mana pesan Anda mungkin dihapus sebelum Anda memiliki kesempatan untuk melihatnya - atau, seperti dalam kasus Anda, masalah tema.

(Ini juga merupakan alat yang sangat berguna jika Anda mencoba membangun segala jenis API, karena semua permintaan itu tidak akan pernah menunjukkan kepada Anda segala jenis pesan dpm ().)

UnsettlingTrend
sumber
1
Ini adalah solusi keseluruhan terbaik untuk saya.
rrirower
1
Juga tak ternilai saat men-debug permintaan ajax.
Felix Eve
8

Pastikan Anda telah mengaktifkan dan menginstal modul Devel sebagaimana dpm()fungsi yang dideklarasikan dalam modul ini.

dpm()deskripsi diambil dari sini .

Mencetak variabel ke area 'pesan' halaman menggunakan drupal_set_message (). Anda dapat menggunakan fungsi ini untuk melacak satu atau lebih variabel saat Anda mengerjakan kode yang menjalankan situs Anda. Karena modul Devel sekarang hadir dengan Krumo, outputnya ringkas dan tidak mencolok.

dpm($input, $name = NULL)

Jika, karena alasan tertentu, Anda tidak menggunakan Krumo, Anda dapat menggunakan parameter $ name untuk membedakan antara panggilan yang berbeda ke dpm ().

Setelah Anda mengunduh dan mengaktifkan Devel, coba jawaban dari file_scan_directory () membutuhkan waktu sekitar 10 detik untuk dieksekusi lagi dan itu akan berfungsi.

Chapabu
sumber
Itu tetap sama. Saya menginstal dan mengaktifkan modul devel, membersihkan semua cache, menjalankan cron dan masih dpm (func_get_args ()) tidak menunjukkan apa-apa.
Jimmy
Di mana Anda meletakkan dpm(func_get_args());?
Chapabu
Dalam file bootstrap.inc: dpm (func_get_args ()); $ cocok = drupal_system_listing ("/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ extension $ /", $ dir, 'name', 0); ...
Jimmy
Coba ubah dpm(func_get_args());untuk die(print_r(func_get_args());- memintas Devel untuk saat ini.
Chapabu
3
Jika perintah kedua yang direkomendasikan oleh Chapabu tidak mengubah apa pun, berarti kode itu tidak dipanggil dan Anda tidak terpengaruh oleh masalah yang sama.
Berdir
5

Jika Anda ingin mencetaknya dari dalam suatu fungsi tanpa menyentuh (atau memiliki) file templat, coba ini:

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

Ini terkadang merupakan hasil dari sumber daya pada halaman yang mengembalikan 404.

Drupal merender halaman 404 dan dengan melakukan itu mengambil (dan menghapus) pesan dari sesi dan menempatkannya di halaman 404 yang tidak Anda lihat. Kemudian ketika halaman utama mengambil pesan tidak ada yang tersisa.

Anda dapat membuka tab jaringan dan memeriksa untuk melihat apakah ada sumber daya yang memiliki status 404.

Solusi mudah di sini adalah mengaktifkan cepat 404 dengan menghapus komentar baris ini di settings.php:

# drupal_fast_404();

Solusi bagus lainnya di sini adalah dengan menggunakan devel_debug_log seperti yang disarankan oleh SlakeFistcrunch.

Felix Eve
sumber
2

Terkadang pesan dapat dipotong atau tidak berfungsi jika AJAX.

Metode yang lebih andal adalah melakukan adil (lalu menghapus setelah selesai):

var_dump($data); die();

Atau Anda dapat menggunakan dd()(bagian dari Devel juga), mis

dd(func_get_args());

kemudian periksa file log Anda (dalam folder temp), mis

$ tail -f /tmp/drupal_debug.txt

Menggunakan metode di atas lebih mudah, lebih cepat dan mungkin mendukung AJAX atau permintaan lainnya tanpa melanggar rendering situs saat ini.


Jika Anda masih suka dpm(), coba juga menggunakan kint()(aktifkan submodule Kint yang disertakan untuk variabel-variabel cantik ini).

kenorb
sumber
1

Jika hanya beberapa dpm()panggilan tidak berfungsi, itu bisa disebabkan karena dpm()crash. Saya melihatnya terjadi dalam skenario berikut ini dalam formulir kustom menyerahkan penangan:

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

Saya percaya kondisi kesalahan ditangkap oleh handler pengecualian dpm(), karena halaman ditampilkan dengan baik, tidak ada WSOD atau sesuatu, hanya tidak ada dpm()pesan juga. Kesalahan ini mungkin rekursi tidak terdeteksi, karena menggunakan ddl($form_state)sebaliknya mengakibatkan browser memaksimalkan memori ketika menonton objek yang sesuai dalam laporan yang dihasilkan oleh modul Devel Debug Log.

Sebagai solusinya, cobalah untuk mencetak hanya bagian (yang relevan) dari objek, seperti dpm($form_state['values'])atau dpm(array_keys($form_state)).

tanius
sumber