获取bundle扩展类中已解析的参数



我正在编写一个Symfony捆绑包,需要根据配置参数的值在Extension类中设置一个服务定义。

只要不尝试在参数值中使用任何表达式,它就可以正常工作。

我的扩展类如下:

class MyBundleExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = $this->getConfiguration($configs, $container);
$config = $this->processConfiguration($configuration, $configs);

dd($config['custom_param']);
}
...
}

在我的应用程序中,我设置了这样的参数:

.env.local:

MY_BUNDLE_CUSTOM_PARAM=blah

config.yaml:

parameters:
my_bundle_custom_param: '%env(MY_BUNDLE_CUSTOM_PARAM)%'
my_bundle:
custom_param: '%my_bundle_custom_param%'

问题是,在Extension类中,这个参数还没有得到解决,所以dd()显示的是:

"env_de85db6c4d65707d_MY_BUNDLE_CUSTOM_PARAM_71f5c271abfed252c958c82c1e3fb8dc"

而不是期望的CCD_ 2。

有什么方法可以在Extension类中获得参数的解析值吗?

您在评论中给出了正确答案:

/**
* @throws Exception
*/
public function load(array $configs, ContainerBuilder $container): void
{
$configuration = new Configuration();
$config        = $this->processConfiguration($configuration, $configs);
$resolve       = $container->resolveEnvPlaceholders($config, true);
$config['upload_path'] = str_replace($_SERVER['DOCUMENT_ROOT'], '', $resolve['upload_directory']);
$container->setParameter("mybundle", $config);

最新更新