YAML中包含引号的多行字符串

时间:2017-02-10 08:56:10

标签: string yaml silex

我有一个YAML配置文件,可以包含一些CSS用于自定义目的。

css.custom: >
  .company-logo {
    height: 60px;
    padding-top: 15px;
  }
  .input[type=\"text\"] {
    background: white;
    border: 1px solid gray;
    border-radius: 3px;
  }

然后将其呈现在名为base.css.twig的文件中,如下所示:

{{ css.custom }}

我的问题是,我无法正确呈现input[type=\"text\"]中的引号,因为反斜杠是按字面呈现的,而引号则呈现为"。有没有人想过如何成功渲染原始报价?

生成的渲染:

input[type="text"]

2 个答案:

答案 0 :(得分:1)

您无法在YAML多行标量字符串中转义任何内容。你不必逃避引号,所以你应该忽略\

css.custom: >
  .company-logo {
    height: 60px;
    padding-top: 15px;
  }
  .input[type="text"] {
    background: white;
    border: 1px solid gray;
    border-radius: 3px;
  }

您还应该考虑是否真的需要折叠(>)而不是文字(|)样式的多行标量。

folding style is like literal style

  

折叠样式由“>”指示符表示。它类似于文字风格;然而,折叠的标量受折线影响。

the literal style没有逃脱:

  

无法转义文字标量内的字符。这会将它们限制为可打印字符。此外,没有办法打破长文字线。

答案 1 :(得分:0)

解决方案是使用{{ css.custom|raw }}

我以为我已经在使用raw,但我错了。