Zweig und autoescaping
Ich Lerne Symfony2. Derzeit bin ich versucht, eine form darzustellen label in einem twig-template. Das Etikett enthält ein html-tag, das ist nicht korrekt gerendert in meiner Zweig-Datei.
Hier folgt das Stück code, wo Sie das Formularfeld erstellt:
$builder->add('zipcode', 'integer', array(
'label' => '<abbr title="Zone Improvement Plan">CAP</abbr> code',
));
In der twig-Datei, die ich render das Feld Beschriftung wie folgt:
{{ form_label(form.zipcode) }}
Ich habe versucht, die raw -, Flucht -, e-Filter, aber die Ergebnisse, die in meine html-Seite ist immer die Zeichenfolge
<abbr title="Zone Improvement Plan">CAP</abbr> code
ist und nicht den entsprechenden HTML-code!
Jede Anregung?
Vielen Dank im Voraus!
Später habe ich die Lösung gefunden.
Die Lösung ist das deaktivieren der autoescape in der label-block zur Verfügung gestellt von Symfony im Pfad:
symfony /src /Symfony /Brücke /Twig /Resources /views /Form /form_div_layout.html-Code.Zweig
So, in Ihre ast-Datei Sie haben, um die folgenden Zeilen außerhalb des Formulars:
{% form_theme form _self %}
{% block generic_label %}
{% spaceless %}
{% if required %}
{% set attr = attr|merge({'class': attr.class|default('') ~ ' required'}) %}
{% endif %}
<label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>{% autoescape false %}{{ label|trans }}{% endautoescape %}</label>
{% endspaceless %}
{% endblock %}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom JeanValjean sich selbst :
Und generalisiert sich dieses Verhalten auf das ganze app, können Sie überschreiben die Formular-block für Etiketten :
Deaktivieren autoespace filter zum Rendern eine variable ist nicht das beste, weil wenn Sie Lesen den code-es ist nicht wirklich klar.
Statt :
Können Sie verwenden :
{{ label|trans|raw }}