Ho uno spazio difficile (
) all'interno di alcune delle mie opzioni di scelta. In qualche modo, da qualche parte, stanno scappando. Ho provato:Symfony2 Lo scappamento automatico del Formbuilder?
{% autoescape false %}
{{ form_widget(foobar) }}
{% endautoescape %}
Così come
{{ form_widget(foobar)|raw }}
E il seguente sotto Twig in config.yml
autoescape: false
Eppure i campi di scelta sono ancora resi come Choice Text Here
invece di Choice Text Here
, e in la fonte che stanno codificando come  Choice Text Here
Nel controllore ho:
$form ->add('foo', 'choice', array(
'label' => 'Foo Label',
'choices' => $fooChoices,
'required' => true));
$form = $form->getForm();
$foobar = $form->createView();
Se print_r
$fooChoices
ottengo:
Array ([1] => 60# FooBar [5] => 60# BatBar [11] => 60# DooWop)
Il che mi mostra la corretta
(notare il doppio spazio davanti degli anni '60). Da qualche parte tra il FormBuilder e il rendering, viene scappato.
Esiste l'escaping incorporato nel Form Builder?
Ciò che ho dedotto è che, attraverso il punto in cui la vista del modulo viene resa tramite $form->createView()
, i dati non vengono ancora sottoposti a escape. Ma, quando raggiunge Twig tramite form_widget, è sfuggito. Fare form_widget(foobar)|raw
mostra questo.
Modifica: ho aggiunto una soluzione alternativa come risposta, ma sono comunque interessato ad accettare una risposta che spiega come impedire che l'escape iniziale si verifichi del tutto.
Posso vedere il codice del widget del modulo? Non c'è questa caratteristica. – Lusitanian
@David Non sono sicuro di seguirlo. Sto usando il modo più semplice di eseguire il rendering di un modulo secondo i documenti: http://symfony.com/doc/current/book/forms.html#rendering-the-form – Nick
Intendo all'interno della classe in cui generi il tuo forma, mi dispiace per l'ambiguità. – Lusitanian