Score:0

วิธีจัดเตรียมอาร์เรย์ของค่าจากผู้ให้บริการบริบท

ธง in

ฉันกำลังมองหาการสร้าง Context Provider แบบกำหนดเองโดยเฉพาะเพื่อจัดหา "กลุ่มของผู้ใช้ปัจจุบัน" ฉันกำลังสร้างสิ่งนี้สำหรับปลั๊กอินอื่น ปลั๊กอินเงื่อนไข ซึ่งมีวัตถุประสงค์เพื่อกรองสิ่งต่างๆ (เช่น บล็อก) ตามบทบาทของกลุ่มผู้ใช้ปัจจุบัน

ฉันทราบดีว่ามีปัญหาและแพตช์ต่อไปนี้ ซึ่งช่วยฉันได้บ้าง:

อย่างไรก็ตามแพทช์ทั้งสองจะจัดการได้เท่านั้น กลุ่มเดียวกล่าวคือ ผู้ให้บริการบริบทจะเลือกเฉพาะกลุ่มแรกที่ผู้ใช้เป็นสมาชิกเป็นหลัก และปลั๊กอินเงื่อนไขจะจัดเตรียมไว้หนึ่งกลุ่มสำหรับการประเมิน สิ่งที่ฉันต้องการทำคือให้ผู้ให้บริการบริบทจัดเตรียมหลายกลุ่ม (ทุกกลุ่มที่ผู้ใช้เป็นสมาชิก) และให้ปลั๊กอินเงื่อนไขยอมรับหลายกลุ่ม

แต่ฉันจะจัดหาและใช้อาร์เรย์ของค่าเป็นค่าบริบทได้อย่างไร

ตัวอย่างส่วนใหญ่สำหรับผู้ให้บริการบริบทและปลั๊กอินที่ใช้ค่าบริบทดำเนินการกับค่าเดียวเท่านั้น ฉันไม่เห็นตัวอย่างเกี่ยวกับวิธีจัดเตรียมอาร์เรย์ (ของกลุ่มในกรณีนี้)

Score:3
ธง fr

เริ่มจากสิ่งนี้:

ตัวอย่างส่วนใหญ่สำหรับผู้ให้บริการบริบทและปลั๊กอินที่ใช้บริบท ค่าดำเนินการกับค่าเดียวเท่านั้น

แม้ว่าจะเป็นเรื่องจริง แต่โปรดทราบว่า "ค่าเดียว" ที่ให้นั้นเป็นวัตถุ ไม่ใช่ประเภทดั้งเดิม ในกรณีของผู้ให้บริการบริบทของกลุ่ม "ค่าเดียว" คือวัตถุเอนทิตีประเภท 'กลุ่ม' ตัวเอนทิตีมีข้อมูลตามปกติทั้งหมด - id, label, คำอธิบาย, วันที่สร้าง, ผู้แต่ง, ฟิลด์ฐาน ฯลฯ ดังนั้นจึงผิดที่จะคิดว่าเป็นตัวเลขเดียวเท่านั้น

ในการจัดเตรียมอาร์เรย์ของค่า คุณต้องส่งคืนวัตถุที่แสดงถึงโครงสร้างข้อมูลแทนเอนทิตี Typed Data API หลักกำหนดประเภทข้อมูลต่างๆ ซึ่งประเภทแผนที่น่าจะดีที่สุดสำหรับวัตถุประสงค์ของคุณแผนที่เก็บชุดของค่าต่างๆ คล้ายกับอาร์เรย์เชื่อมโยงที่คุ้นเคยใน PHP

ดังนั้น โครงร่างของการแก้ปัญหาคือการสร้างผู้ให้บริการบริบทของคุณเองโดยการคัดลอกผู้ให้บริการบริบทของกลุ่มที่มีอยู่ แก้ไขสำเนาของคุณเพื่อแทนที่การสร้างข้อกำหนดบริบทเอนทิตี คุณสร้างข้อกำหนดบริบทแผนที่ จากนั้นเพิ่มค่าที่คุณต้องการให้กับของคุณ แผนที่.

หากคุณต้องการฟังก์ชันเพิ่มเติม คุณสามารถสร้างประเภทข้อมูลของคุณเองได้ (ฉันขอแนะนำให้ใช้คลาสย่อยของ Map สำหรับสิ่งนี้) และจัดเตรียมวัตถุของประเภทข้อมูลนั้นแทน Entity หรือ Map

คุณสามารถดูตัวอย่างสั้นๆ ของการเขียน Context Provider ของคุณเองได้ที่นี่: https://www.drupal.org/docs/contributed-modules/rules-essentials/for-developers/providing-global-context-variables

โพสต์คำตอบ

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