การแก้จุดบกพร่อง hooks ที่ยิง


9

ฉันค่อนข้างใหม่ในการพัฒนาโมดูล

มีวิธีการส่งออกในปัจจุบันสิ่งที่ hooks ได้รับการทำงานบนโหนดบางอย่าง?

สิ่งนี้จะทำกับ xdebug หรือไม่

คำตอบ:


9

ยกเว้นว่าคุณได้รับข้อผิดพลาดร้ายแรง (หรือหน้าจอว่างเปล่า) มันเป็นเรื่องง่ายที่จะได้รับรายชื่อของโมดูลที่จะเรียกใช้เมื่อมีการเรียกใช้ hook พิเศษ:

$modules = module_implements($hook);
foreach ($modules as $key =>  $module) {
  $function = $module . '_' . $hook;
  if (!function_exists($function)) {
    unset($modules[$key]);
  }
}
// $modules is now an array containing all the modules that will be invoked by $hook.

คุณสามารถใช้สิ่งต่าง ๆ เช่น xDebug เพื่อติดตามการไหลของ Drupal แต่สิ่งนี้อาจท่วมท้นโดยเฉพาะถ้าคุณยังใหม่กับ Drupal


1
ถ้าคุณอยากจะลองแก้จุดบกพร่องและไม่ต้องการที่จะใช้เวลาตั้งขึ้นคุณสามารถลองQuickstart มันเป็นเครื่องเสมือนจริงและด้วย drush มันง่ายมากที่จะติดตั้งไซต์จากนั้นใส่โมดูลของคุณนำเข้า Netbeans และ hit debug
วิสกี้

1
นี่จะไม่แสดงโมดูลทั้งหมดที่ใช้เบ็ดเฉพาะหรือไม่ตะขอทั้งหมดที่มี Drupal เรียกใช้จนถึงจุดนั้น ต่อมาคือวิธีที่ฉันอ่านคำขอของ @ chrisjlee
mpdonadio

1
@MPD มันจะไม่เพียงแสดงโมดูลที่ใช้เบ็ด แต่ยังลำดับที่พวกเขาจะเรียกว่า หากบริบทคือสิ่งที่เกิดขึ้นก่อน / หลังการเรียกใช้โมดูลของ hook โมดูลด้านบนจะพอเพียง หากคุณต้องการทราบว่ามีการเรียก hook foo ในช่วงเวลาหนึ่งในโฟลว์การดำเนินการมันจะค่อนข้างยากที่จะเข้าใจเนื่องจาก Drupal นั้นซับซ้อนมาก โดยเฉพาะอย่างยิ่งสำหรับนักพัฒนาใหม่ ฉันไม่แน่ใจว่านี่เป็นสิ่งที่ OP ต้องการ แต่อาจมีประโยชน์มากกว่าคำแนะนำ xDebug อยู่ดี
googletorp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.