如何正确使用“%”在Symfony中转义YAML配置?

如何正确使用“%”在Symfony中转义YAML配置?,symfony,symfony4,Symfony,Symfony4,在创建捆绑包时,通常需要为将使用捆绑包的开发人员提供一些支持 在这种情况下,我需要配置的值支持%someText%,而不支持 示例:配置不正确 我的包名称: 我的配置:'%someText%' 因此,我想,我必须避开%使其看起来像%%才能使事情正常进行-从而产生值%%someText%% 如果某个参数值包含%字符,则需要通过添加另一个参数来避免它,因此SyfONI不认为它是对参数名称的引用[…] < /P> 示例:没有错误,但出现意外结果 我的包名称: 我的\u配置:“%someText%%”

在创建捆绑包时,通常需要为将使用捆绑包的开发人员提供一些支持

在这种情况下,我需要配置的值支持%someText%,而不支持

示例:配置不正确

我的包名称: 我的配置:'%someText%' 因此,我想,我必须避开%使其看起来像%%才能使事情正常进行-从而产生值%%someText%%

如果某个参数值包含%字符,则需要通过添加另一个参数来避免它,因此SyfONI不认为它是对参数名称的引用[…] < /P> 示例:没有错误,但出现意外结果

我的包名称: 我的\u配置:“%someText%%” 虽然这解决了您请求的不存在的参数[…]错误,但实际值现在是%%someText%%。我希望Symfony返回未设置的值,即%someText%

当然,我可以str_替换“%”、“%”、“%%someText%%”,但这感觉有点像黑客

如何更改该值以实际获取%someText%

以下是加载配置的位置:

//为简洁起见,省略了名称空间和use语句 类MyBundleNameExtension扩展了ConfigurableExtension { /** *@doc */ 受保护的函数loadInternalarray$mergedConfig,ContainerBuilder$container { $loader=new loader\YamlFileLoader$container,new FileLocator__DIR__.'/../Resources/config'; $loader->load'config.yml'; p\r$mergedConfig[我的配置];//打印%%someText%% } } 我已经验证了同时使用“和”会产生相同的结果。

问题 问题是在处理参数之前调用了loadInternal,因此给我留下了%%someText%%

解决方案 我创建了一个SetupListener类,如下所示:


您是如何/在哪里检索值的?嗨,谢谢,有时候我忘记了人们不会神奇地知道我的代码:-我已经更新了问题:-mh。。。只是想一想,因为symfony显然区分了这两种语言:你试过用双引号而不是单引号吗?但可能不起作用;o/但除此之外,我同意这种行为是奇怪和意外的。实际上感觉像个bug。谢谢你的建议-我已经相应地更新了问题:-对于我来说,使用%%someText%%效果很好,它会转换为%someText%