ข้อมูลโค้ดต่อไปนี้พบได้ในโมดูล 'nodeaccess' ในขณะนี้ การเติมข้อความอัตโนมัติทำให้คุณสามารถค้นหาผู้ใช้ในฐานข้อมูลได้ สิ่งที่ฉันต้องการทำคือผู้ใช้ที่กลับมามีบทบาท A หรือบทบาท B เท่านั้น
ถ้า ($user->hasPermission('เข้าถึงโปรไฟล์ผู้ใช้')) {
$แบบฟอร์ม['คีย์'] = [
'#type' => 'entity_autocomplete',
'#default_value' => isset($form_values['keys']) ? $form_values['keys'] : '',
'#ขนาด' => 40,
'#target_type' => 'ผู้ใช้',
'#title' => $this->t('ป้อนชื่อเพื่อค้นหาผู้ใช้'),
];
}
ฉันพบ นี้ ลิงก์ที่ดูเหมือนจะทำบางสิ่งที่คล้ายกับที่ฉันต้องการ แต่ดูเหมือนว่าจะไม่ทำงานโดยเพียงแค่เปลี่ยนเงื่อนไข ฉันไปและแก้ไขให้มีลักษณะดังนี้:
ฟังก์ชัน my_custom_module_query_alter($query) {
ถ้า ($query->hasTag('user_acccess')) {
$or = db_or()->condition('user__roles.roles_target_id', 'A')-
>เงื่อนไข('user__roles.roles_target_id', 'B');
$query->condition($หรือ);
}
}
เป็นแบบสอบถามที่ฉันทำไม่ถูกต้องหรือไม่? หรืออาจเป็นแท็ก 'user_access' ที่ไม่ตรงกับส่วนย่อยของโค้ดด้านบน คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก
โอ้ เว็บไซต์ของฉันทำงานบน Drupal Core 8.9.8 btw