[SF2] Formar dinamicamente un formulario en plantilla twig.

267 views
Skip to first unread message

Pablo Braulio

unread,
Jun 22, 2012, 2:49:39 AM6/22/12
to Lista de symfony
Hola a todos.

El asunto del mensaje no es muy descriptivo de lo que pretendo hacer. Espero poder explicarlo mejor a continuación.
Necesito componer un formulario cuyos campos serán el resultado de una consulta.

Tengo una tabla donde defino que campos ha de tener cada elemento

Por ejemplo.
select id, juego, campo
from opcionesjuegos where juego = X

En la clase donde formo el formulario (juegoType.php), le paso la consulta desde el controlador y construyo los campos con builder->add(nombre, tipo, ...)
Hasta ahí no hay problema. El problema viene en la plantilla twig. 
Si pongo {{form_widget(form)}}, me pinta todos los campos sin problema, pero por cuestiones de maquetación necesito saber saber el nombre del campo a mostrar, pasando el nombre como una variable y eso es lo que no consigo.

Por ejemplo. Desde el controlador le paso un array con el nombre de los campos a mostrar y en la plantilla los quiero formar así.

{{ for VARIABLE_CAMPO in consulta_campos }}
    {{form_row(form.VARIABLE_CAMPO)}}
{{ endfor }}

Pongo el mayúscula donde reside el problema. He probado poniendo {{VARIABLE_CAMPO}}, pero igualmente no funciona.

¿Alguien sabe si hay modo de hacer esto?. Muchas gracias.
Saludos cordiales.
Pablo.

Si lo reenvías, ten la precaución de borrar los datos de procedencia que
encabezarían tu reenvío – empezando por mi dirección de correo
electrónico - . Coloca siempre las direcciones de tus contactos en el
campo <CCO> para que viajen discretas, no en el campo <Para> ni en
el<CC>. De esa forma nadie que lo reciba tendrá constancia de las señas
de los demás destinatarios a los que también se remite. Todo ello a fin
de evitar que nadie se aproveche de todas las direcciones que se van
acumulando al pasar de buzón a buzón para el lanzamiento de correo
basura y otras indeseadas lindezas. Aparte claro está de garantizar la
privacidad.

Danitza Aguilera

unread,
Jun 22, 2012, 3:28:49 AM6/22/12
to symfo...@googlegroups.com
Hola Pablo,

en twig cuando quieres mostrar una variable utilizas {{ }} pero si lo que quieres es ejecutar lineas has de hacerlo entre {% %}
 
{% for VARIABLE_CAMPO in consulta_campos %}
    {{form_row(form.VARIABLE_CAMPO)}}
{% endfor %}

Espero q te sirva :)
Un saludo,

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

Pablo Braulio

unread,
Jun 22, 2012, 3:31:34 AM6/22/12
to symfo...@googlegroups.com
Si, eso lo tenía claro. Ha sido un error al escribir el código en el mensaje. El problema viene al poner VARIABLE_CAMPO

Method "VARIABLE_CAMPO" for object "Symfony\Component\Form\FormView" does not exist in ...

Saludos cordiales.
Pablo.

Si lo reenvías, ten la precaución de borrar los datos de procedencia que
encabezarían tu reenvío – empezando por mi dirección de correo
electrónico - . Coloca siempre las direcciones de tus contactos en el
campo <CCO> para que viajen discretas, no en el campo <Para> ni en
el<CC>. De esa forma nadie que lo reciba tendrá constancia de las señas
de los demás destinatarios a los que también se remite. Todo ello a fin
de evitar que nadie se aproveche de todas las direcciones que se van
acumulando al pasar de buzón a buzón para el lanzamiento de correo
basura y otras indeseadas lindezas. Aparte claro está de garantizar la
privacidad.



Juan Carlos Romero

unread,
Jun 22, 2012, 5:21:17 AM6/22/12
to symfo...@googlegroups.com
Hola , has probado con :

{{form_row( form[VARIABLE_CAMPO] )}}

Un saludo.

Pablo Braulio

unread,
Jun 22, 2012, 6:04:28 AM6/22/12
to symfo...@googlegroups.com
Si, eso era. Gracias.

Saludos cordiales.
Pablo.

Si lo reenvías, ten la precaución de borrar los datos de procedencia que
encabezarían tu reenvío – empezando por mi dirección de correo
electrónico - . Coloca siempre las direcciones de tus contactos en el
campo <CCO> para que viajen discretas, no en el campo <Para> ni en
el<CC>. De esa forma nadie que lo reciba tendrá constancia de las señas
de los demás destinatarios a los que también se remite. Todo ello a fin
de evitar que nadie se aproveche de todas las direcciones que se van
acumulando al pasar de buzón a buzón para el lanzamiento de correo
basura y otras indeseadas lindezas. Aparte claro está de garantizar la
privacidad.



--
Reply all
Reply to author
Forward
0 new messages