Я настроил пользовательскую страницу в своей системе, которая ожидает 2 параметра, которые будут использоваться для создания части контента на этой странице, я могу получить информацию со своей страницы, но мне интересно, что лучше метод возврата отказа в доступе, когда мои критерии терпят неудачу
я нашел эта страница который показывает, как вы можете настроить собственный контроллер доступа, но этот пример передает сущность пользователя, когда меня больше интересуют «слаги» URL-адреса, на который они нажали.
маршрутизация.yml
мой_модуль.user_subscribe:
путь: /my-module/subscribe/{entity_type}/{entity_id}
значения по умолчанию:
_controller: \Drupal\my-module\Controller\SubscriptionPages::subscribe
_title: Подписка по электронной почте прошла успешно
тип: узел
сущность: 1
требования:
_permission: 'доступ к содержимому'
_entity_check: «ИСТИНА»
Services.yml
Сервисы:
мой_модуль.entity_check:
класс: Drupal\мой-модуль\Access\EntityCheck
теги:
- {имя: access_check, apply_to: _entity_check}
Тогда у меня есть мой src/контроллер/страницы подписки
файл и один для src/Access/EntityCheck
и т. д., кажется, что вся эта часть работает, я могу вручную принудительно применить код в моем EntityCheck, чтобы вернуть отказ в доступе, и это так, но я хочу знать, как я могу вытащить {тип объекта}
и {entity_id}
по URL-адресу, который они нажали, чтобы я мог убедиться, что они не пытаются получить доступ к чему-то, чего им не следует
например
mywebsite.com/my-module/subscribe/node/15 — подойдет
mywebsite.com/my-module/subscribe/foo/bar — вернет отказ в доступе, потому что я хочу запустить проверку внутри своего кода EntityCheck
Внутри ссылки выше есть аргументы: ['@current_user']
внутри файла services.yml есть ли эквивалент для текущего URL-адреса или те, где я могу более конкретно получить каждый из элементов по отдельности?