Score:1

เหตุใดจึงไม่มีไลบรารี Highcharts ซึ่งกำหนดจากโมดูลแบบกำหนดเอง โหลดในทุกหน้า

ธง ae

ฉันใช้ Drupal 9.1.7 บน lando บน Mac ฉันกำลังเขียนโมดูลแบบกำหนดเอง และฉันต้องการรวมไลบรารี Highcharts ไฟล์ .libraries.yml มีลักษณะดังนี้

stats_degrees:
  จส:
    https://code.highcharts.com/highcharts.js: { ประเภท: ภายนอก, ลดขนาด: เท็จ }
  การพึ่งพา:
    - แกน / jquery

จากการอ่านเอกสาร ฉันเชื่อว่าฉันควรเห็นไลบรารี Highcharts ที่ด้านล่างของทุกหน้าเมื่อฉันดูแหล่งที่มา แต่ฉันไม่เห็นที่ใดเลย

ฉันพลาดอะไรไปรึเปล่า?

ฉันได้ตรวจสอบความถูกต้องของเนื้อหา YAML แล้ว ฉันได้ติดตั้งโมดูลแผนภูมิด้วย หากสิ่งนั้นสร้างความแตกต่าง

Score:2
ธง in

การกำหนดไลบรารีเป็นเพียงครึ่งเดียวของกระบวนการ ไลบรารีไม่ได้ถูกโหลดในทุกหน้าตามค่าเริ่มต้น คุณต้องบอก Drupal เมื่อถึงเวลาที่ควรรวมไลบรารีของคุณ

สำหรับรายละเอียดทั้งหมด โปรดดูที่ การแนบไลบรารีกับเพจ ส่วนของ การเพิ่มสไตล์ชีต (CSS) และ JavaScript (JS) ให้กับโมดูล Drupal เอกสารประกอบบน drupal.org

ฉันเดิมพันที่คุณต้องการ แนบไลบรารีกับอาร์เรย์เรนเดอร์:

$build['the_element_that_needs_asset_library']['#attached']['library'][] = 'your_module/library_name';

หรือ แนบไลบรารีในเทมเพลตกิ่งไม้ (เทมเพลตที่สร้างมาร์กอัปแผนภูมิของคุณ):

{{แนบ_library('your_module/library_name') }}
Dorian Winterfeld avatar
ae flag
ใช่! ฉันพยายามแนบไปกับอาร์เรย์เรนเดอร์ดังนี้: `$chart['#attached']['library'][] = 'stats_degrees/highcharts';` `$chart['#type'] = 'แผนภูมิ';` `$chart['#chart_type'] = 'บรรทัด';` `$chart['#chart_library'] = 'highcharts';` เป็นต้น แต่เมื่อฉันส่งคืนอาร์เรย์: `return render($chart);` มันเป็นโมฆะเสมอและไม่มี Highcharts JS เมื่อฉันดูแหล่งที่มา วิธีนี้ใช้ได้กับ D7 แต่ D7 จัดการไลบรารี JS ต่างกันและ drupal_render() ถูกแทนที่ด้วย render()
sonfd avatar
in flag
โดยปกติคุณไม่ควรเรนเดอร์อาร์เรย์เรนเดอร์ด้วยการเรียกเรนเดอร์ คุณควรส่งคืนอาร์เรย์นั้น นั่นคือสิ่งแรกที่ฉันจะลอง ดู https://www.drupal.org/docs/theming-drupal/twig-in-drupal/twig-best-practices-preprocess-functions-and-templates
Dorian Winterfeld avatar
ae flag
ฉันกำลังทำเพื่อแก้ไขจุดบกพร่องใน PHP Storm `$rendered = \Drupal::service('renderer')->renderPlain($chart);` เมื่อฉันเจาะเข้าไปในดีบักเกอร์ ฉันเห็นว่า Renderer::executeInRenderContext() คืนค่า null ต้องมีบางอย่างผิดปกติกับอาร์เรย์เรนเดอร์ของฉัน... บางทีเราควรปิดเธรดนี้แล้วฉันจะเปิดเธรดใหม่หลังจากที่ฉันทำการดีบั๊กเพิ่มเติม
sonfd avatar
in flag
ใช่ ดูเหมือนจะเป็นความคิดที่ดี ดูเหมือนว่าคุณรู้วิธีแนบไลบรารีอย่างถูกต้อง แต่มีปัญหากับอาร์เรย์เรนเดอร์ของคุณ
Dorian Winterfeld avatar
ae flag
ฉันติดตั้งไลบรารี highcharts โดยใช้ผู้แต่ง มันติดตั้งภายใต้ /libraries มีเหตุผล. ฉันจะอ้างอิงสิ่งนี้ในไฟล์ .libraries.yml ได้อย่างไร ฉันพยายามทำให้มันสัมพันธ์กับโมดูลของฉัน `../../../libraries/highcharts/highcharts.js: { }` แต่ฉันยังไม่เห็นมันในแหล่งที่มาของหน้า ฉันได้ลองแนบมันกับอาร์เรย์เรนเดอร์ของฉันและในเทมเพลตกิ่งแบบนี้: `{{ Attach_library('stats_degrees/highcharts') }}` แต่ฉันยังไม่เห็น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา