2012-10-02 19 views
5

Jak ustawić atrybut nazwy renderowanego pola w symfony 2?Ustawienie nazwy atrybutu symfony 2 pole formularza

wyjście z oczekiwaniami:

 <input type="text" name="test" value="test" /> 

Rendering dziedzinie tędy

 {{ form_widget(form.test, { 'attr': {'name': 'test'} }) }} 

pewno nie działa.

wyjściowa jest nadal

 <input type="text" name="form[test]" value="test" />. 

Czy istnieje jakiś sposób, aby ustawić atrybut nazwa lub identyfikator atrybutu dynamicznie? Dziękuję Ci.

+1

patrz http://stackoverflow.com/questions/8416783/symfony2-form-component-creating-fields-without-forms-name-in-the-name-att – max

Odpowiedz

1
<input type="text" name="form[test]" value="test" /> 

ma już test jako nazwę. Oczywiście w twoim przypadku nadal jest nazwa root name o nazwie form. Usunięcie tego nie jest zalecane, ponieważ po przeczytaniu żądania wypełnienia danych formularza można zidentyfikować formularz za pomocą jego nazwy.

Czytaj [wzór] Włączenie pusty głównego nazwę formyhttps://github.com/symfony/symfony/pull/2936

1

nadrzędne Blokowanie gałązka następujący sposób:

{% block widget_attributes -%} 
id="{{ id }}" 
{%- if read_only %} readonly="readonly"{% endif -%} 
{%- if disabled %} disabled="disabled"{% endif -%} 
{%- if required %} required="required"{% endif -%} 
{%- for attrname, attrvalue in attr -%} 
    {{- " " -}} 
    {%- if attrname in ['placeholder', 'title'] -%} 
     {{- attrname }}="{{ attrvalue|trans({}, translation_domain) }}" 
    {%- elseif attrvalue is sameas(true) -%} 
     {{- attrname }}="{{ attrname }}" 
    {%- elseif attrvalue is not sameas(false) -%} 
     {{- attrname }}="{{ attrvalue }}" 
    {%- endif -%} 
{%- endfor -%} 
name={{full_name}} 
{%- endblock widget_attributes %} 

Zmianę prostu się nazwa = {{FULL_NAME}} z pierwszej linii ten ostatni, więc jeśli dodasz nazwę attr do elementu dodawania formularza, nazwa nie będzie już ignorowana.

+0

Domyślnie jest to plik "Symfony/Bridge/Twig/Resources/view/Form/form_div_layout.html.twig " – HRoux