【问题标题】:Yaml: default value for a variableYaml:变量的默认值
【发布时间】:2014-12-15 17:50:50
【问题描述】:

这是我的用例:我们使用 Yaml 来保存我们所有的环境配置。 我们有一个 conguration.yml 保存每个环境的配置,还有一个 parameters.yml 保存特定的本地配置。

parameters.yml

value1:  abc
value2:  ~

configuration.yml

service:
    arg1: %value1%
    arg2: %value2%

我的问题:有没有办法可以删除 value2: ~ 行而不会出现来自 Yaml 的解析错误?如果value2没有定义,我们可以在configuration.yml中定义一种默认值?

【问题讨论】:

  • 我对 YAML 知之甚少,但这个问题似乎暗示如果你把它排除在外,它将被解释为 null:stackoverflow.com/questions/6745051/…
  • 为什么需要移除 value2?
  • @SenseException 否则会抛出未找到参数的错误

标签: php symfony yaml


【解决方案1】:

不可以,您只能在parameters.yml.dist 文件中指定默认值。此功能仅在 symfony 2.3 中可用,需要composer install 来询问/更新配置。

请参阅features annuncement 以进一步阅读

【讨论】:

  • composer install 似乎没有修改我这边的parameters.yml。我发现这个 github.com/Incenteev/ParameterHandler 可以完成这项工作,但你确定 symfony 可以原生处理这个问题吗?
  • 是的,composer install 进程的后钩子运行只管理“忽略参数”的 ParameterHandler 组件,所以如果你没有在 parameters.yml 中指定键,它将把从parameters.yml.dist阅读它的关键
  • 嗨@Maz,如果您觉得我的回答有用,请考虑支持我的回答
【解决方案2】:

我相信,2020 年及以后有可能。

例如, arguments: ["@=container.hasParameter('some_param') ? parameter('some_param') : 'default_value'"]

另见:

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2013-01-17
    • 2019-09-10
    相关资源
    最近更新 更多