Symfony2 Formbuilder auto entkommen?
Ich habe eine harte Raum (
) in einigen meiner Wahl-Optionen. Irgendwie, irgendwo, Sie werden mit Escapezeichen versehen. Ich habe versucht:
{% autoescape false %}
{{ form_widget(foobar) }}
{% endautoescape %}
Sowie
{{ form_widget(foobar)|raw }}
Und den folgenden Zweig in config.yml
autoescape: false
Doch die Auswahl-Felder sind immer noch so dargestellt, als Choice Text Here
statt Choice Text Here
, und in der Quelle Sie sind codiert als  Choice Text Here
In der Steuerung habe ich:
$form ->add('foo', 'choice', array(
'label' => 'Foo Label',
'choices' => $fooChoices,
'required' => true));
$form = $form->getForm();
$foobar = $form->createView();
Wenn ich print_r
$fooChoices
ich bekommen:
Array ( [1] => 60# FooBar [5] => 60# BatBar [11] => 60# DooWop )
Was zeigt mir die richtige
(beachten Sie den double space in front of the 60 ' s). Irgendwo zwischen den FormBuilder und die Darstellung, es ist immer entgangen.
Wird dort gebaut-die Flucht in das Formular-generator?
Was ich ableiten, dass durch die zeigen, dass der Formular-Ansicht gerendert wird über $form->createView()
sind die Daten noch ohne Umschreibung. Aber, durch die Zeit erreicht er einen Zweig über form_widget, es wurde entkommen. Dabei form_widget(foobar)|raw
zeigt dies.
Edit: ich habe soeben einen workaround als eine Antwort, aber ich bin immer noch daran interessiert, akzeptieren einer Antwort, die erklärt, wie Sie verhindern, dass die anfängliche Flucht von dem auftreten insgesamt.
- Kann ich den code der Formular-widget? Es gibt keine solche Funktion.
- Ich bin mir nicht sicher, ob ich Folgen. Ich bin mit der einfachsten Art und Weise der Erbringung einer form nach den docs: symfony.com/doc/current/book/forms.html#rendering-the-form
- Ich meine, in der Klasse, wo generieren Sie Ihre form, sorry für die Unklarheit.
- bearbeitet die konkreten code und die Daten, die es empfängt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche problem mit radio-Etiketten. Diese löst.
Habe ich am Ende die Schaffung eines Twig-Erweiterung, dekodiert die kodierten HTML-und fügte hinzu, es als Dienst:
Die Erweiterung in Vendor/Bundle/Extensions/Zweig
Registrierung des Dienstes in Vendor/Bundle/Resources/config/services.yml
Die Verwendung:
Weiß ich noch nicht, wo die Flucht durchgeführt wird, wie es gespielt wird nur auf die Daten selbst (und ich habe versucht, erstellen einer Daten-Ereignis für das Formular ändern, die Daten), aber zumindest gibt mir das Ergebnis, was ich Suche.
form_label
. Sie müssen es anwenden, um dieform_widget
Was Sie wirklich tun sollte, ist über-Reiten der form_label Vorlage
Beachten Sie zusätzlich die autoescape Abschnitte.
Wahrscheinlich nicht die beste Lösung, aber was ist zu tun, dass im form-Konstruktor (Wir zwingen
ein space char):htmlspecialchars_decode($string, ENT_QUOTES)