2012-10-02 3 views
5

Как установить атрибут имени отображаемого поля в symfony 2?Атрибут атрибута имени поля формы symfony 2

Ожидаемый результат:

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

Rendering поле таким образом

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

определенно не работает.

Выход еще

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

Есть ли способ, чтобы установить атрибут имя или идентификатор атрибута динамически? Спасибо.

+1

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

ответ

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

уже есть test как имя. Конечно, в вашем случае есть имя корневой формы, которое называется form. Удаление этого на самом деле не рекомендуется, потому что когда вы читаете запрос на заполнение данных формы, вы можете идентифицировать форму по ее названию формы.

Чтение [Форма] Включение пустой корневой имя формыhttps://github.com/symfony/symfony/pull/2936

1

переопределение прутик блокировать этот путь:

{% 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 %} 

Это изменение просто перемещение имя = {{full_name}} из первой строки в последний, поэтому, когда вы добавляете имя attr в элемент добавления компоновщика формы, имя больше не будет игнорироваться.

+0

По умолчанию файл «Symfony/мост/Twig/Ресурсы/просмотр/Форма/form_div_layout.html.twig» – HRoux