2012-10-02 48 views
5

如何在symfony 2中設置呈現字段的名稱屬性?symfony 2表單字段的設置名稱屬性

預期輸出:

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

渲染場這樣

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

肯定是行不通的。

產出仍然

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

有什麼辦法來設置的name屬性和id屬性的動態?謝謝。

+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 /橋/嫩枝/資源/圖/表/ form_div_layout.html.twig」 – HRoux