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

Mismo formulario para varios registros

30 de septiembre de 2016

Muy buenas tardes, antes que nada agradecer el trabajo que hacen, mi problema es el siguiente: Estoy trabajando con Symfony3, tengo una base de datos con obras pendientes, ejecutando y finalizadas, me gustaría mostrar todos los registros de las obras que se están ejecutando y mostrar el mismo formulario para cada registro. Ahora mismo muestro los registros pero el formulario solo se ve en la primera fila. Si me pudieran orientar en como encontrar la solución se lo agradecería, muchas gracias.

Saludos.


Respuestas

#1

No acabo de entender el problema que sucede:

  • ¿Quieres reutilizar el mismo formulario para tres entidades diferentes?
  • ¿Quieres mostrar el mismo formulario tres veces en la misma página?
  • ¿Quieres mostrar una colección de elementos utilizando el mismo formulario?

@javiereguiluz

30 septiembre 2016, 20:10
#2

Perdón, lo que quiero es mostrar el mismo formulario las veces que hagan falta en la misma página.

{% for obra in obras %}
    {% if obra.estado == 'Ejecutando' %}
        {{form_start(form, {'action':'', 'method':'POST','attr': {'class': '','id':''} } ) }}
            <tr>
                    <td id="{{obra.cliente}}">{{obra.cliente}}</td>
 
                <td>{{form_errors(form.operario)}}
                {{form_widget(form.operario)}}</td>
 
                <td>{{form_errors(form.dia)}}
                {{form_widget(form.dia)}}</td>
 
                <td>{{form_errors(form.total)}}
                {{form_widget(form.total)}}</td>
 
                <td><button id="btsubmit" type="submit" name="" class="btn btn-default button-form">Añadir</button></td>
 
            </tr>
               {{ form_end(form) }}
    {% endif %}
{% endfor %}

@Rube101

30 septiembre 2016, 20:26
#3

En este issue del repositorio de Symfony hablan de lo mismo y ya ves que le recomiendan no hacerlo. También le sugieren usar el método createNamed() (también puedes usar createNamedBuilder()).

Mi opinión personal sería que plantearas el problema de otra forma en vez de mostrar el mismo formulario N veces. Puedes añadir algún campo en el formulario que te permita distinguir qué tipo de formulario estás trabajando en cada momento. Además, con un poco de JavaScript puedes ocultar/mostrar campos en función del tipo que sea.

@javiereguiluz

30 septiembre 2016, 20:35
#4

De acuerdo, intentaré plantearlo de otra forma, muchas gracias.

@Rube101

30 septiembre 2016, 20:59
#5

¿Y por que no los llamas por ajax cuando lo necesites? Haces un action que te renderice el Form y la asocias a un botón y con eso ya lo tienes.

@TsubasaAkai

30 septiembre 2016, 21:21