2012-10-02 12 views
5

¿Cómo establecer el atributo de nombre del campo representado en Symfony 2?Nombre del atributo de configuración del campo de formulario de Symfony 2

salida esperada:

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

reproducir el campo de esta manera

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

definitivamente no funciona.

de salida sigue siendo

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

¿Hay alguna manera de establecer el atributo de nombre o la identificación de atributos de forma dinámica? Gracias.

+1

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

Respuesta

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

ya tiene test como nombre. Por supuesto, todavía hay un nombre de formulario raíz llamado form en su caso. No se recomienda realmente eliminar esto, porque cuando lee la solicitud para completar los datos del formulario puede identificar el formulario por su nombre de formulario.

Leer [Formulario] Habilitar raíz vacío nombre del formulariohttps://github.com/symfony/symfony/pull/2936

1

anulando bloque de la ramita de esta manera:

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

El cambio es simplemente moviendo name = {{FULL_NAME}} desde la primera línea de el último, así que cuando agregue el nombre attr al elemento add del constructor de formularios, el nombre ya no se ignorará.

+0

Por defecto es el archivo "Symfony/Bridge/Twig/Resources/view/Form/form_div_layout.html.twig " – HRoux

Cuestiones relacionadas