ฉันได้ตั้งค่าเพจที่กำหนดเองในระบบของฉันซึ่งคาดว่าจะมีพารามิเตอร์ 2 ตัวที่จะใช้เพื่อสร้างเนื้อหาบางส่วนในเพจนั้น ฉันสามารถดึงข้อมูลจากเพจของฉันได้ แต่ฉันสงสัยว่าอะไรดีที่สุด วิธีการคืนการเข้าถึงที่ถูกปฏิเสธเมื่อเกณฑ์ของฉันล้มเหลว
ฉันพบ หน้านี้ ซึ่งแสดงวิธีตั้งค่าตัวควบคุมการเข้าถึงแบบกำหนดเอง แต่ตัวอย่างนี้กำลังส่งเอนทิตีผู้ใช้ เมื่อฉันสนใจมากกว่าคือ 'ตัวทาก' ของ URL ที่พวกเขาโดน
routing.yml
my_module.user_subscribe:
เส้นทาง: /my-module/subscribe/{entity_type}/{entity_id}
ค่าเริ่มต้น:
_controller: \Drupal\my-module\Controller\SubscriptionPages::สมัครสมาชิก
_title: การสมัครสมาชิกทางอีเมลสำเร็จ
ชนิด: โหนด
นิติบุคคล: 1
ความต้องการ:
_permission: 'เข้าถึงเนื้อหา'
_entity_check: 'จริง'
บริการ.yml
บริการ:
my_module.entity_check:
คลาส: Drupal\my-module\Access\EntityCheck
แท็ก:
- { ชื่อ: access_check, apply_to: _entity_check }
แล้วฉันมีของฉัน src/Controller/SubscriptionPages
ไฟล์และหนึ่งไฟล์สำหรับ src/Access/EntityCheck
ฯลฯ ทุกส่วนนั้นดูเหมือนจะใช้งานได้ ฉันสามารถบังคับใช้รหัสด้วยตนเองใน EntityCheck ของฉันเพื่อส่งคืนการเข้าถึงที่ถูกปฏิเสธและทำได้ แต่สิ่งที่ฉันต้องการทราบคือฉันจะดึง {entity_type}
และ {entity_id}
จาก URL ที่พวกเขาเข้าชม เพื่อให้ฉันตรวจสอบได้ว่าพวกเขาไม่ได้พยายามเข้าถึงสิ่งที่ไม่ควร
เช่น
mywebsite.com/my-module/subscribe/node/15 - ก็ใช้ได้
mywebsite.com/my-module/subscribe/foo/bar - จะปฏิเสธการเข้าถึงกลับ เนื่องจากฉันต้องการเรียกใช้การตรวจสอบภายในรหัส EntityCheck ของฉัน
ในลิงค์ด้านบนก็มี อาร์กิวเมนต์: ['@current_user']
ภายในไฟล์ services.yml มี URL ที่เทียบเท่าสำหรับ URL ปัจจุบันหรือไม่ หรือมี URL ใดที่ฉันสามารถดึงข้อมูลแต่ละรายการแยกกันได้โดยเฉพาะเจาะจงมากขึ้น