2017-02-10 55 views
0

我有一个YAML配置文件,可以包含一些CSS用于自定义目的。包含引号的YAML中的多行字符串

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"] 
+0

YAML给出了'css.custom'的关键,但是在Twig中,你可以访问一个变量'css.customCss'。此外,您给出的Twig代码可能不足以识别错误。你在'{%autoescape%}'环境中吗?如果删除'| raw',会发生什么? – flyx

+0

我的不好,我在示例中犯了一个错误。我会对它进行测试,并在没有原始过滤器的情况下发布结果。 – ecc

+0

@flyx证明你是对的。这一直是问题!我正看着错误的地方,原料丢失了! – ecc

回答

0

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

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

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没有逃脱:

没有办法逃避的文字标量内的字符。这限制了它们可打印的字符。另外,没有办法打破冗长的字面意思。

+0

但是,这并不回答我的问题,因为引号呈现为'"'。使用'>'或'|'对我来说是一样的。实际上我认为所有这一切都适合这个目标。它也不能解决问题。 – ecc

+0

正如我所指出的,从'>'到'|'的变化是可选的。重要的部分是,你似乎认为你需要通过在他们之前加上反引号来避开引号,但是在折叠/字面YAML字符串中你不能。 (如果你的处理软件需要反引号,比这无关与YAML,你错标签的问题)。 – Anthon

+0

我认为,我们不能想当然地认为标有'yaml'的确可以用YAML知识回答,因为它可能不适合,这个问题是不是YAML相关的OP明显,答案告诉他们一个问题当然是有帮助的。 – flyx

相关问题