【问题标题】:Symfony 2 YAML passing arraysSymfony 2 YAML 传递数组
【发布时间】:2012-03-07 03:00:47
【问题描述】:

我想知道在哪里可以获得更多关于 symfony2 的 yaml 配置中的特殊语法(如 @somevar%somevar%)的信息?

例如,使用@ 定义了对服务的调用,这就是我们将依赖项传递给服务的方式。另一方面,%somevar% 指的是名称为 somevar 的已定义参数的值。

所以,如果我这样做:

parameters:
    custom: "some value"
    another: %custom%

然后another 将填充custom 的值,在我的例子中是“某个值”。我的问题是,这些关系记录在哪里?

我特别需要能够引用数组的元素,例如%somevar[somekey]%,但这种语法不起作用。

提前致谢!

编辑:我发现了这个:Full merge key support. Full support for references, aliases, and full merge key. Don't repeat yourself by referencing common configuration bits.

在 yaml 文档中,但没有关于它的进一步文档..

【问题讨论】:

    标签: php configuration symfony yaml


    【解决方案1】:

    您要搜索的并不是 Yaml 本身,而是依赖注入容器的 Yaml 加载器。

    如果您搜索有关它的文档,这里是旧组件 (v1) 的文档:http://components.symfony-project.org/dependency-injection/trunk/book/05-Service-Description

    Symfony2 带有一个新组件(基于相同的原理)。你可以在这里找到官方文档:http://symfony.com/doc/current/book/service_container.html#service-parameters

    关于您的问题,您无法访问 DI 参数的键,您必须手动展平。

    您可以使用 DI 扩展来满足您的需求,例如:https://github.com/symfony/AsseticBundle/blob/master/DependencyInjection/AsseticExtension.php#L54(可能不是最好的示例)。

    【讨论】:

    • 谢谢,其实我只需要在其他参数中引用参数,以避免重复。所以,这甚至不取决于DI。我发现 YAML 的别名可以解决问题,我只需要标记我需要的条目然后引用它们,如下所示:code.google.com/p/snakeyaml/wiki/Documentation#Aliases 不像我预期的那样灵活,但可以解决问题。还是谢谢!
    猜你喜欢
    • 2017-08-23
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多