Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Colección de formularios tabulados en una tabla

5 de marzo de 2015

Hola a todos. Un saludo. Me pasa lo siguiente.

Debo tabular los datos de una colección de formularios pero con tablas. La cuestión es que form_table_layout me crea la tabla de esta manera:

Pantallazo de la Colección de formularios

Y necesito que vayan una bajo la otra.

Quedo atento,


Respuestas

#1

Cuando se añade un elemento en una colección de formularios, la plantilla usa el valor de la propiedad prototype del widget de la colección para generar el HTML necesario. Lo más fácil sería mirar cómo es ese código HTML y modificar su aspecto con CSS.

Otra posible solución consiste en definir el valor de esa propiedad prototype de la colección, aunque es algo que no te aconsejo en este caso sencillo porque no merece la pena.

La solución que te recomiendo es que utilices tu propia plantilla de formularios. Tranquilo porque es mucho más fácil y rápido de lo que parece. Lo primero, añade la siguiente instrucción en tu plantilla:

{% form_theme form _self %}

Esto hace que al mostrar cualquier formulario, primero se busque en tu plantilla el código Twig+HTML necesario para generar el widget. Si tu plantilla define ese "trozo" que está buscando el formulario, se utiliza. Si no existe, se utiliza el "trozo" por defecto que define el estilo form_table_layout.html.twig.

Así que en este caso sólo tienes que redefinir el estilo del "trozo" que se utiliza para mostrar las colecciones y dejar que el formulario utilice para todo lo demás los estilos por defecto. Añade lo siguiente en tu plantilla y después, añádele todo el HTML que quieras para producir el resultado que estás buscando:

{%- block collection_widget -%}
    {% if prototype is defined %}
        {%- set attr = attr|merge({'data-prototype': form_row(prototype) }) -%}
    {% endif %}
    {{- block('form_widget') -}}
{%- endblock collection_widget -%}

@javiereguiluz

5 marzo 2015, 18:13
#2

Hola, encontré algo y me funciona. Les comparto

Se debe crear un macro dentro del formulario y crear el table. Ahí está toda la información....

Saludos!

@cristian_angulo

5 marzo 2015, 18:14
#3

Gracias Javier!

@cristian_angulo

5 marzo 2015, 18:16