Score:1

จำกัดการมองเห็นรายการเมนูตามสิทธิ์

ธง in

ฉันมีเมนูที่สร้างโมดูล (โดยใช้ไฟล์ yaml) พร้อมรายการเมนู 5 รายการข้อกำหนดของฉันไม่อนุญาตให้ฉันจำกัดการมองเห็นรายการเมนูตามบทบาท เนื่องจากสามารถเพิ่มบทบาทได้แบบไดนามิก ดังนั้นฉันต้องทำสิ่งนี้โดยใช้การอนุญาตเท่านั้น

สิ่งที่ฉันได้ลอง
(1) การจำกัดการเข้าถึงรายการเมนูโดยใช้การอนุญาตเส้นทาง - แสดงหน้าที่ถูกห้ามแต่ยังคงอนุญาตให้มองเห็นรายการเมนูที่ถูกจำกัด

โปรดดูไฟล์จริงของฉันด้านล่าง:

portal_hrm_core.links.menu.yml

portal_hrm_core.hrm_link:
  ชื่อเรื่อง: 'ผู้จัดการฝ่ายทรัพยากรบุคคล'
  ชื่อเส้นทาง: portal_hrm_core.hrm_link
  menu_name: hcm
  ขยาย: TRUE

portal_hrm_core.routing.yml

portal_hrm_core. hrm_link:
เส้นทาง: '/admin/hrm' 
ค่าเริ่มต้น:
  _controller: '\Drupal... systemAdminMenuBlockPage'
  _title: 'การจัดการทรัพยากรมนุษย์'
ความต้องการ:
  _permission: 'เข้าถึง hrm_core_job+access_hrm_core_employee'

(2) โมดูลการมีส่วนร่วม - การมองเห็นรายการเมนู และ รายการเมนูต่อบทบาท ทั้งสองอย่างนี้เป็นไปตามบทบาทเท่านั้นและไม่สามารถรองรับการอนุญาตได้

ฉันรู้ว่าฉันสามารถไปที่ระดับต่ำและใช้บางอย่างเช่น hook_preprocess_menu แต่ดูเหมือนจะหนักไปสำหรับความต้องการง่ายๆ เช่น การพิจารณาว่าเบ็ดนั้นอาจถูกเรียกได้กี่ครั้ง

ขอคำแนะนำเพิ่มเติมด้วยคนค่ะ?

ขอบคุณ

ru flag
จุด AFAIK (1) ถูกต้องและควรซ่อนรายการเมนูด้วย (ใช้วิธีนั้นในโครงการของฉันเอง) เมนูถูกแคชไว้มาก คุณล้างแคชหลังจากเพิ่มสิทธิ์เส้นทางแล้วหรือยัง
ilechcod avatar
in flag
Hudri - การตอบกลับอย่างรวดเร็วของคุณทำให้ฉันมีกำลังใจอย่างมาก! ขอบคุณ. ได้โปรด ฉันได้อัปเดตคำถามเดิมด้วยไฟล์ต้นฉบับสำหรับการตรวจสอบของคุณ และฉันได้ล้างแคชโดยใช้ทั้ง ```devel menu ui``` และ ```drush cr``` รายการเมนูนี้ยังคงมองเห็นได้ไม่ว่าจะได้รับอนุญาตก็ตาม และฉันไม่ได้เข้าสู่ระบบในฐานะผู้ดูแลระบบ
ru flag
นี่เกือบจะเหมือนกันทุกประการ ฉันแค่ไม่มีคีย์ `expanded: true` ในไฟล์ของฉัน ไม่รู้ว่าคีย์นั้น ฉันยังมี `ตัวเลือกเพิ่มเติม: _admin_route: TRUE` ในไฟล์ `routing.yml` ของฉันด้วย เพราะฉันต้องการตัวเลือกนั้นสำหรับหน้าที่มีธีมผู้ดูแลระบบเท่านั้น
Score:0
ธง in

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

$manipulators = [
  ['callable' => 'menu.default_tree_manipulators:checkAccess']
]

การไม่มีบรรทัดเหล่านั้นทำให้เมนูของฉันเพิกเฉยต่อการตรวจสอบการเข้าถึง การไม่แสดงความคิดเห็นช่วยแก้ปัญหาได้ ขอบคุณ.

โพสต์คำตอบ

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