Symfony2 добирается до параметров access_control, расположенных в security.yml

Я пытаюсь получить параметры access_control, которые находятся в моем security.yml как массив в моей настраиваемой службе.
Как и при получении параметров role_hierarchy, я думал, что это будет работать со следующим кодом:

$accessParameters = $this->container->getParameter('security.access_control');

К сожалению, это было не так.
Может кто-нибудь сказать, как получить параметры?

access_control получить параметр access_control из контейнера.
Это связано с тем, что этот параметр используется только для создания запросов, которые будут зарегистрированы как AccessMap позже, указанные в AccessListener , а затем останутся без регистрации в контейнере.

Вы можете попробовать что-то взломанное, чтобы вернуть этих помощников, получив их как

 $context = $this->get("security.firewall.map.context.main")->getContext(); $listener = $context[0][5]; // Do reflection on "map" private member 

Но это своего рода уродливое решение.

Еще один способ увидеть, как их получить, – снова проанализировать файл безопасности

 use Symfony\Component\Yaml\Yaml; $file = sprintf("%s/config/security.yml", $this->container->getParameter('kernel.root_dir')); $parsed = Yaml::parse(file_get_contents($file)); $access = $parsed['security']['access_control']; 

Если вы хотите зарегистрировать эту конфигурацию в службе, вы можете сделать что-то вроде

services.yml

 services: acme.config_provider: class: Acme\FooBundle\ConfigProvider arguments: - "%kernel.root_dir%" acme.my_service: class: Acme\FooBundle\MyService arguments: - "@acme.config_provider" 

Acme \ FooBundle \ ConfigProvider

 use Symfony\Component\Yaml\Yaml; class ConfigProvider { protected $rootDir; public function __construct($rootDir) { $this->rootDir = $rootDir; } public function getConfiguration() { $file = sprintf( "%s/config/security.yml", $this->rootDir ); $parsed = Yaml::parse(file_get_contents($file)); return $parsed['security']['access_control']; } } 

Acme \ FooBundle \ MyService

 class MyService { protected $provider; public function __construct(ConfigProvider $provider) { $this->provider = $provider; } public function doAction() { $access = $this->provider->getConfiguration(); foreach ($access as $line) { // ... } } }