【问题标题】:Symfony2: Reference string or an array in config yamlSymfony2:配置 yaml 中的引用字符串或数组
【发布时间】:2012-07-06 19:50:53
【问题描述】:

在 symfony2 中,我使用了以下配置 yaml:

// config.yml
parameters:
  something: 
    content: 
      price:  2.30
      mainText: 'Some text here.'
      redText:  'This is a text here plus price: ' %price%

%price% 错误并给了我一个错误,但系统告诉它一个数组,那么如何指向某个东西['content'][price]?

【问题讨论】:

  • 为什么要将文本放入配置文件中?为什么不把它放在翻译文件中?
  • 我的网站不使用多种语言。但是它支持不同的品牌,并且 yml 中的一些文本更容易为多个版本配置
  • 您还可以在 Extension 类 (symfony.com/doc/current/cookbook/bundles/extension.html) 中构造必要的参数。但是,这需要更多的努力,尤其是如果您以前没有使用过配置公开。

标签: symfony yaml


【解决方案1】:

你可以这样做

parameters:
    something.content.price: 2.30
    something:
        content:
            mainText: 'Some text here.'
            redText:  'This is a text here plus price: %something.content.price%'

这里我们只有两个参数,something.content.price 包含一个浮点数,something 包含一个数组。

这意味着您只能在 DI 配置中直接访问这 2 个。

【讨论】:

  • 这意味着我也可以定义 price: 2.30 然后使用 %price% 这可能不像它应该的那样可读:/
  • 我查看了 DI 组件代码,这是我发现可以使用的最合理的方法。
  • 而你使用的方式意味着你只能注入%something%,而不能注入%something.content.mainText%。这种限制可能是为了确保性能至少是合理/良好的。
  • 恐怕你是对的。看来你会成为赢家
  • 呃,我以为我会赢得一些东西:p
【解决方案2】:

Same answer, different post

有点晚了,但这是您正在寻找的解决方案:P

// parameters.yml
parameters:
    something: 
    content: 
        price:  2.30
        mainText: 'Some text here.'
        redText:  'This is a text here plus price: '

使用数组中定义的价格的方式如下:

//config.yml 
twig:
    globals:
        fee: content['price']

解释
当您将参数文件导入 config.yml 文件时,您可以自动访问其中定义的所有变量。 请记住,当您使用您定义的结构时。

您正在定义一个名为 content 的键值对数组,其中包含许多键值对,引用它们的方法如上所述。

希望这对可能正在寻找它的人有用! :)

【讨论】:

    【解决方案3】:

    也许%something.content.price%

    【讨论】:

    猜你喜欢
    • 2012-05-08
    • 2014-12-29
    • 2012-02-19
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 2012-06-04
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多