В Symfony 3.2 у меня есть пакет, который определяет параметр в его parameters.xml
:
<parameter key="acs_platform.security.default_target_route" type="string">platform_login</parameter>
parameters.xml
импортируется в services.xml
того же пакета.И services.xml
загружается в контейнер с помощью Расширения пакета под DependencyInjection
.Если я попытаюсь выполнить дамп внутри метода load
, я смогу правильно увидеть свой параметр:
/**
* Loads a specific configuration.
*
* @throws \InvalidArgumentException When provided tag is not defined in this extension
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.xml');
\Doctrine\Common\Util\Debug::dump($container->getParameterBag(), 6); die;
}
Если я попытаюсь отладить свой контейнер, он верный, я все еще вижу свой параметр:
php bin/console debug:container --parameters | grep "acs_platform.security.default_target_route"
Проблема возникает, когда я хочу установить этот параметр в безопасности (app/config/security.yml
) как default_target_path:
firewalls:
main:
anonymous: ~
guard:
authenticators:
- acs_platform.security.loginform_authenticator
default_target_path: '%acs_platform.security.default_target_route%'
Я получаю ошибку:
ParameterNotFoundException
You have requested a non-existent parameter "acs_platform.security.default_target_route".
И я не знаю, что я делаю не так.Параметр существует, и компонент безопасности все еще не может его найти.Что не так с моим кодом?
(В том же файле security.yml я использую идентификатор сервиса acs_platform.security.loginform_authenticator
, как вы можете видеть, и я также использую провайдера, оба из которых определены в одном и том же services.xml
который импортирует мои parameters.xml
, и они оба работают)