dpm () ekranda herhangi bir sonuç göstermiyor


Yanıtlar:


28

Elinizde olduğundan emin olun print $messages;sizin de page.tpl.phpşablon dosyası. Varsayılan olarak, devel (dpm) içeriğini sitenin mesaj alanına yazdıracak şekilde yapılandırılmıştır. Bu nedenle, şablonunuz herhangi bir nedenle içeriğini oluşturmuyorsa $messages, hiçbir şey görmezsiniz.


13
  1. Bazen krumo($variable)işe yaramadığında işe yarayabilir dpm($variable).

  2. Bazen print dpm($variable)işe yaramadığında işe yarayabilir dpm($variable).

    1. Hiçbir yokken de çözüm olabilir print $messagesGözlerinde farklı page.tpl.phpartık. Belki geri ekleyebilirsin.

9

Drupal sitesine, Devel'e erişmek için doğru izinlerle giriş yapmış olmanız gerekir. Yönetici yapması gereken olarak giriş yapın.


7
İsimsiz kullanıcılar doğru izne sahipse, giriş yapmak gerekli değildir.
kiamlaluno

3
Bu izin 'Erişim geliştiricisi bilgilerine' 'yönetici / insanlar / izinler'de bulunabilir.
Citricguy 22:12

9

Devel_debug_log tavsiye ederim . Devel modülünü gerektirir ve size ddl () işlevini verir. ddl, raporlarınıza yapılandırmaya bir sayfa ekler; bu nedenle, bekçi uygulamasına yazdırmaya benzer, ancak hata ayıklama iletilerinizi gönderebileceğiniz ve iletilerinizden önce iletilerinizin temizlenebileceği yarış türü koşulları konusunda endişelenmeyin. onları görme şansı - veya sizin durumunuzda olduğu gibi, tema sorunları.

(Bu aynı zamanda, herhangi bir API türünü oluşturmaya çalışıyorsanız, bu isteklerin tümü size asla herhangi bir dpm () mesajı göstermeyeceğinden son derece yararlı bir araçtır.)


1
Bu benim için en iyi genel çözümdü.
kahrolası

1
Ayrıca ajax isteklerinde hata ayıklama yaparken paha biçilmezdir.
Felix Eve

8

Devel modülünü dpm(), bu modülde bildirilen bir işlev olarak etkinleştirdiğinizden ve kurduğunuzdan emin olun .

dpm()Açıklama buradan alındı .

Drupal_set_message () kullanarak değişkeni sayfanın 'mesaj' alanına yazdırır. Sitenizi çalıştıran kod üzerinde çalışırken bir veya daha fazla değişkeni izlemek için bu işlevi kullanabilirsiniz. Devel modülü artık Krumo ile birlikte geldiğinden, çıkış kompakt ve göze çarpmayandır.

dpm($input, $name = NULL)

Bir nedenden ötürü, Krumo kullanmıyorsanız, farklı adlar arasındaki farkı dpm () ile ayırt etmek için $ name parametresini kullanabilirsiniz.

Devel'i indirdikten ve etkinleştirdikten sonra, file_scan_directory () ' den gelen cevabı tekrar deneyerek yaklaşık 10 saniye sürer ve çalışması gerekir.


Aynı kalır. Devel modülünü kurdum ve etkinleştirdim, tüm önbellekleri temizledim, cron çalıştırın ve hala dpm (func_get_args ()) hiçbir şey göstermedi.
Jimmy

Nerede koyuyoruz dpm(func_get_args());?
Chapabu

Bootstrap.inc dosyasında: dpm (func_get_args ()); $ eşleşir = drupal_system_listing ("/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ extension $ /", $ dir, 'name', 0); ...
Jimmy

Değiştirmeyi deneyin dpm(func_get_args());için die(print_r(func_get_args());şu an için Devel baypas -.
Chapabu

3
Chapabu tarafından önerilen ikinci komut hiçbir şeyi değiştirmezse, kodun çağrılmadığı ve aynı sorundan etkilenmediğiniz anlamına gelir.
Berdir

5

Bir şablon dosyasına dokunmadan (veya sahip olmadan) bir fonksiyonun içinden yazdırmak istiyorsanız, şunu deneyin:

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

3

Bu bazen sayfadaki bir 404 döndüren bir kaynağın sonucudur.

Drupal 404 sayfasını oluşturur ve bunu yaparken oturumdaki mesajları alır (ve temizler) ve onları görmediğiniz 404 sayfasına koyar. Ardından ana sayfa mesajları alırken geriye hiçbir şey kalmaz.

Ağ sekmesini açabilir ve herhangi bir kaynağın 404 durumu olup olmadığını kontrol edebilirsiniz.

Burada kolay bir çözüm settings.php 'de bu satırı açarak hızlı 404 sağlamaktır:

# drupal_fast_404();

Buradaki bir başka iyi çözüm, SlakeFistcrunch tarafından önerildiği gibi devel_debug_log kullanmaktır.


2

Bazen mesaj AJAX durumunda kesilebilir veya çalışmayabilir.

Daha güvenilir bir yöntem sadece yapmaktır (daha sonra bitirdikten sonra):

var_dump($data); die();

Veya kullanabilirsiniz dd()(Devel’in bir parçası), örneğin

dd(func_get_args());

sonra günlük dosyanızı kontrol edin (temp klasöründe), örneğin

$ tail -f /tmp/drupal_debug.txt

Yukarıdaki yöntemi kullanmak daha kolaydır, daha hızlıdır ve mevcut site oluşturmayı bozmadan AJAX veya başka bir isteği destekleyebilir.


Hala seviyorsanız dpm(), kullanmayı da deneyin kint()(değişkenlerin bu güzel baskısı için Kint alt modülünü etkinleştirin).


1

Yalnızca bazı dpm()çağrılar işe yaramazsa, bu durum dpm()çökmeden kaynaklanabilir . Özel bir form gönderme işleyicisinde aşağıdaki senaryoda olduğunu gördüm:

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

Hata durumunun bir istisna işleyicisi tarafından yakalandığına inanıyorum dpm(), çünkü sayfa iyi görüntüleniyordu, WSOD ya da başka bir şey göstermiyordu, sadece dpm()mesaj da yoktu. Hata muhtemelen tespit edilemez, çünkü ddl($form_state)bunun kullanılması, bunun yerine Devel Hata Ayıklama Günlüğü modülü tarafından oluşturulan rapordaki ilgili nesneyi izlerken tarayıcının belleğinde maksimuma çıkmasına neden oldu.

Geçici bir çözüm olarak, dpm($form_state['values'])veya gibi nesnenin yalnızca (ilgili) bir kısmını yazdırmaya çalışın dpm(array_keys($form_state)).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.