แฟล็กเป็นแบบทางเดียว คุณจึงไม่สามารถ "แฟล็กแบบสองทาง" ได้
ใน Drupal 8/9 การตั้งค่าสถานะจะมีเอนทิตีเป้าหมายเสมอ
ดังนั้น ถ้าผู้ใช้ A แฟล็กผู้ใช้ B และผู้ใช้ B แฟล็กผู้ใช้ A คุณมีสองแฟล็ก:
- ค่าสถานะของผู้ใช้ A ของผู้ใช้ B
- ค่าสถานะของผู้ใช้ B ของผู้ใช้ A
ฉันคิดวิธีที่ดีในการทำเช่นนี้ใน Views โดยไม่มีรหัสที่กำหนดเองไม่ได้
ทางเลือกอื่นจะเป็นเช่น ธงเพื่อน โมดูลซึ่งใช้ฟังก์ชัน "การเป็นเพื่อน" (หรือฟังก์ชันการปัดเพื่อจับคู่ร่วมกันของ Tinder)
การใช้ฟังก์ชันแบบนี้มาก่อนใน Drupal 7 ใน Drupal 8/9 ฉันจะลองเขียนโค้ดใน _flagging_insert()
hook ที่ตรวจสอบเมื่อผู้ใช้แฟล็กผู้ใช้รายอื่น และกำหนดว่าผู้ใช้แฟล็กได้แฟล็กผู้ใช้แฟล็กหรือไม่ ถ้าเป็นเช่นนั้น ให้สร้างเอนทิตี (อาจเป็นโหนดที่มีการอ้างอิงเอนทิตีไปยังผู้ใช้ทั้งสองหรือเอนทิตีแบบกำหนดเอง หากคุณต้องการดูหรูหรา) ประเภท เพื่อน หรือ จับคู่ หรืออะไรก็ตาม แล้วจัดเรียงรายการที่ตรงกันใน Views แน่นอนว่าหากผู้ใช้สามารถปลดธงซึ่งกันและกันและทำลายแมตช์ได้ คุณต้องเพิ่มโค้ดเพื่อรองรับกรณีนั้นด้วย