2017-02-10 2 views
0

Ich habe eine YAML-Konfigurationsdatei, die ein bisschen CSS für Anpassungszwecke enthalten kann.Mehrzeilige Zeichenfolge in YAML mit Anführungszeichen

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

, die dann in einer Datei gerendert wird genannt base.css.twig wie folgt aus:

{{ css.custom }} 

Mein Problem ist, dass ich nicht die Zitate in input[type=\"text\"] bekommen können richtig zu machen, wie die Backslash wörtlich wiedergegeben wird und die Zitate werden als " gerendert. Hat jemand herausgefunden, wie man rohe Anführungszeichen erfolgreich rendert?

Die resultierend machen:

input[type="text"] 
+0

Die YAML gibt einen Schlüssel von 'css.custom', aber in Twig, greifen Sie auf eine Variable' css.customCss' zu. Außerdem ist Ihr gegebener Zweigcode möglicherweise nicht genug, um den Fehler zu erkennen. befinden Sie sich in einer '{% autodescape%}' Umgebung? Was passiert, wenn Sie das '| row' entfernen? – flyx

+0

Mein Fehler, ich habe einen Fehler im Beispiel gemacht. Ich werde es testen und die Ergebnisse mit und ohne den Rohfilter posten. – ecc

+0

@flyx stellt sich heraus, dass Sie Recht hatten. Das war das Problem die ganze Zeit! Ich habe mir den falschen Ort angesehen und das Rohe fehlte! – ecc

Antwort

0

Die Lösung ist die Verwendung {{ css.custom|raw }}

Ich dachte, ich schon raw wurde mit aber ich war falsch.

1

Sie nichts in YAML mehrzeiligen Skalare Strings entweichen können. Sie müssen nicht die Anführungszeichen entkommen, so sollten Sie den \ auslassen:

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

Sie sollten auch prüfen, ob Sie wirklich die Faltung (>) und nicht den wörtlichen (|) Stil von mehrzeiligen wollen Skalare.

Der folding style is like literal style:

Der gefaltete Stil wird durch die „>“ Anzeige bezeichnet. Es ist ähnlich dem wörtlichen Stil; gefaltete Skalare unterliegen jedoch einer Linienfaltung.

und the literal style nicht entkommen haben:

es keine Möglichkeit gibt Zeichen in wörtlichen Skalare zu entkommen. Dies beschränkt sie auf druckbare Zeichen. Darüber hinaus gibt es keine Möglichkeit, eine lange wörtliche Zeile zu unterbrechen.

+0

Dies beantwortet jedoch meine Frage nicht, da die Zitate als '"' gerendert werden. Die Verwendung von '>' oder '|' ist für mich dasselbe. Ich denke tatsächlich, dass alles in einer einzigen Zeile besser zu dem Zweck passt. Es löst auch nicht das Problem. – ecc

+0

Der Wechsel von '>' nach '|' ist optional, wie ich schon angedeutet habe. Der wichtige Teil ist, dass Sie zu denken scheinen, dass Sie den Anführungsstrichen entkommen müssen, indem Sie ein Backquote vor ihnen setzen, aber in einer gefalteten/literalen YAML Schnur können Sie nicht. (Und wenn Ihre Bearbeitungssoftware das Backquote benötigt, dann hat das nichts mit YAML zu tun und Sie haben die Frage falsch markiert). – Anthon

+0

Ich denke, wir können nicht davon ausgehen, dass eine mit 'yaml' markierte Frage tatsächlich mit YAML-Wissen beantwortet werden kann, weil es für das OP nicht offensichtlich ist, dass das Problem nicht YAML-bezogen ist und eine Antwort, die ihnen natürlich hilft . – flyx

Verwandte Themen