ฉันมีปัญหาเช่นเดียวกับfile_scan_directory () ใช้เวลาประมาณ 10 วินาทีในการดำเนินการ ฉันลองทำตามdpm(func_get_args())
คำแนะนำ แต่น่าเสียดายที่มันไม่ได้แสดงอะไรให้ฉันเลย
ฉันล้างแคชทั้งหมดแล้วและทำงาน cron ฉันพลาดอะไรไป
ฉันมีปัญหาเช่นเดียวกับfile_scan_directory () ใช้เวลาประมาณ 10 วินาทีในการดำเนินการ ฉันลองทำตามdpm(func_get_args())
คำแนะนำ แต่น่าเสียดายที่มันไม่ได้แสดงอะไรให้ฉันเลย
ฉันล้างแคชทั้งหมดแล้วและทำงาน cron ฉันพลาดอะไรไป
คำตอบ:
ตรวจสอบให้แน่ใจว่าคุณมีprint $messages;
ของคุณในpage.tpl.php
แฟ้มแม่แบบ ตามค่าเริ่มต้น devel (dpm) ได้รับการกำหนดค่าให้พิมพ์เนื้อหาในพื้นที่ข้อความของไซต์ ดังนั้นหากเทมเพลตของคุณด้วยเหตุผลบางอย่างไม่สามารถแสดงเนื้อหาของ$messages
คุณจะไม่เห็นอะไรเลย
บางครั้งkrumo($variable)
อาจทำงานเมื่อdpm($variable)
ไม่ได้
บางครั้งprint dpm($variable)
อาจทำงานเมื่อdpm($variable)
ไม่ได้
print $messages
ในตัวคุณpage.tpl.php
อีกต่อไป บางทีคุณสามารถเพิ่มกลับได้คุณต้องลงชื่อเข้าใช้เว็บไซต์ Drupal ด้วยสิทธิ์ที่ถูกต้องในการเข้าถึง Devel เข้าสู่ระบบในฐานะผู้ดูแลระบบควรทำ
ฉันขอแนะนำให้devel_debug_log ต้องใช้โมดูล devel และให้ฟังก์ชัน ddl () ddl เพิ่มหน้าลงในรายงานของคุณในการกำหนดค่าดังนั้นจึงคล้ายกับการพิมพ์ไปยังสุนัขเฝ้าบ้าน แต่คุณมีหน้าสะอาดดีที่คุณสามารถส่งข้อความดีบั๊กของคุณและไม่ต้องกังวลเกี่ยวกับเงื่อนไขประเภทการแข่งขันที่ข้อความของคุณ โอกาสที่จะเห็นพวกเขา - หรือในกรณีของคุณประเด็นเรื่อง
(นี่เป็นเครื่องมือที่มีประโยชน์อย่างมากหากคุณพยายามสร้าง API ประเภทใด ๆ เนื่องจากคำขอเหล่านั้นจะไม่แสดงข้อความ dpm () ใด ๆ เลย)
ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานและติดตั้งโมดูลDevelตามdpm()
ฟังก์ชั่นที่ประกาศไว้ในโมดูลนี้
พิมพ์ตัวแปรไปยังพื้นที่ 'ข้อความ' ของหน้าโดยใช้ drupal_set_message () คุณสามารถใช้ฟังก์ชันนี้เพื่อติดตามตัวแปรหนึ่งตัวหรือมากกว่าเมื่อคุณทำงานกับโค้ดที่ใช้งานเว็บไซต์ของคุณ เนื่องจากโมดูล Devel มาพร้อมกับ Krumo เอาต์พุตจึงมีขนาดกะทัดรัดและไม่สร้างความรำคาญ
dpm($input, $name = NULL)
หากด้วยเหตุผลบางอย่างคุณไม่ได้ใช้ Krumo คุณสามารถใช้พารามิเตอร์ $ name เพื่อแยกความแตกต่างระหว่างการโทรไปยัง dpm ที่แตกต่างกัน ()
หลังจากคุณดาวน์โหลดและเปิดใช้งาน Devel แล้วให้ลองคำตอบจากfile_scan_directory () ใช้เวลาประมาณ 10 วินาทีในการดำเนินการอีกครั้งและควรจะทำงาน
dpm(func_get_args());
?
dpm(func_get_args());
เป็นdie(print_r(func_get_args());
- บายพาส Devel สักครู่
หากคุณต้องการพิมพ์จากด้านในฟังก์ชั่นโดยไม่ต้องแตะ (หรือมี) ไฟล์เทมเพลตลองสิ่งนี้:
$nid = 3;
$node = node_load($nid);
dpm($node);
print theme('status_messages');
บางครั้งนี่เป็นผลลัพธ์ของทรัพยากรบนหน้าเว็บที่ส่งคืน 404
Drupal วาทกรรม 404 หน้าและในการทำเช่นนั้นดึง (และล้าง) ข้อความจากเซสชั่นและวางไว้ในหน้า 404 ที่คุณไม่เห็น จากนั้นเมื่อหน้าหลักเรียกข้อความที่ไม่มีเหลือ
คุณสามารถเปิดแท็บเครือข่ายและตรวจสอบเพื่อดูว่าทรัพยากรใด ๆ ที่มีสถานะ 404
วิธีแก้ปัญหาอย่างง่ายที่นี่คือการเปิดใช้งาน 404 ที่รวดเร็วโดยการยกเลิกหมายเหตุบรรทัดนี้ใน settings.php
# drupal_fast_404();
อีกวิธีที่ดีที่นี่คือใช้devel_debug_logตามที่SlakeFistcrunchแนะนำ
บางครั้งข้อความอาจถูกตัดหรือไม่สามารถใช้งานได้ในกรณีของ AJAX
วิธีการที่เชื่อถือได้มากขึ้นคือการทำเพียง (จากนั้นลบหลังจากเสร็จสิ้น):
var_dump($data); die();
หรือคุณสามารถใช้dd()
(ส่วนหนึ่งของ Devel เช่นกัน) เช่น
dd(func_get_args());
จากนั้นตรวจสอบไฟล์บันทึกของคุณ (ในโฟลเดอร์ temp) เช่น
$ tail -f /tmp/drupal_debug.txt
การใช้วิธีการด้านบนนั้นสะดวกกว่าเร็วกว่าและอาจรองรับ AJAX หรือคำขออื่น ๆ โดยไม่ทำให้การแสดงผลของไซต์ปัจจุบันเสียหาย
หากคุณยังต้องการdpm()
ลองใช้kint()
(เปิดใช้งาน submodule Kint ที่รวมอยู่เพื่อพิมพ์ตัวแปรสวย ๆ เหล่านี้)
หากบาง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))