I've setup a custom page in my system which is expecting 2 parameters that will be used to generate part of the content on that page, I'm able to retrieve the information from my page, but I'm wondering what is the best method of returning an access denied when my criteria fail
I found this page which shows how you can setup a custom access controller, but this example is passing the user entity, when what I'm more interested in is the 'slugs' of the URL they've hit
routing.yml
my_module.user_subscribe:
path: /my-module/subscribe/{entity_type}/{entity_id}
defaults:
_controller: \Drupal\my-module\Controller\SubscriptionPages::subscribe
_title: Email Subscription Sucessful
type: node
entity: 1
requirements:
_permission: 'access content'
_entity_check: 'TRUE'
Services.yml
services:
my_module.entity_check:
class: Drupal\my-module\Access\EntityCheck
tags:
- { name: access_check, applies_to: _entity_check }
Then I have my src/Controller/SubscriptionPages
file, and one for src/Access/EntityCheck
etc, all that part seems to be working, I can manually enforce the code in my EntityCheck to return an access denied and it does, but what I want to know is how can I pull the {entity_type}
and {entity_id}
from the URL they've hit so I can check they aren't trying to access something they shouldn't
eg
mywebsite.com/my-module/subscribe/node/15 - would be fine
mywebsite.com/my-module/subscribe/foo/bar - would return access denied, because I want to run the check inside my EntityCheck code
Inside the link above it has arguments: ['@current_user']
inside the services.yml file, is there an equivalent one for current URL, or ones where I can more specifically retrieve each of the items individually?