Foros del Web » Programando para Internet » PHP » Symfony »

Generación dinámica de campos de formulario

Estas en el tema de Generación dinámica de campos de formulario en el foro de Symfony en Foros del Web. Buenas! Les hago una consulta que me está costando bastante resolver. Tengo una tabla que vincula datos de dos tablas (Texto con Autores) donde, un ...
  #1 (permalink)  
Antiguo 12/02/2014, 11:38
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Pregunta Generación dinámica de campos de formulario

Buenas!
Les hago una consulta que me está costando bastante resolver. Tengo una tabla que vincula datos de dos tablas (Texto con Autores) donde, un texto puede tener varios autores, los autores pueden haber participado en varios textos. Como es la típica tabla de claves para solucionar la relación Muchos a Muchos, tenía resuelto el tema de la siguiente manera:

En pantalla figuraba como título el del TEXTO
Debajo, un listado con los autores mencionados, con una opción al final para quitarlos.
En otro listado, debajo, el listado de autores donde estaban todos los autores que no habían sido incluidos en el texto, con una opción para agregarlo al final, de modo que al agregar el autor al texto, dejaba de figurar en los disponibles para figurar en el listado de arriba.

El problema es que al usuario no le gustó esta modalidad y pide que el listado de autores disponibles para agregar tenga una casilla de verificación al final para tildar uno por uno los que quiere asociar al texto, guardando luego.

Lo que necesito aquí es que los checkbox se generen de manera dinámica cuando se realiza la consulta a la tabla autores (menos los ya utilizados) y no le encuentro vuelta en Symfony.
Si el Form se asocia directamente a una Entity o Model, no tengo forma de tener un Model que refleje el resultado de la consulta, no se si me explico.

Soy bastante nueva en esto y no le encuentro la punta para empezar a trabajarlo. Me podrían dar alguna sugerencia?

Desde ya, muchísimas gracias.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 13/02/2014, 10:18
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Generación dinámica de campos de formulario

Cita:
Iniciado por verinchi Ver Mensaje
Buenas!
Les hago una consulta que me está costando bastante resolver. Tengo una tabla que vincula datos de dos tablas (Texto con Autores) donde, un texto puede tener varios autores, los autores pueden haber participado en varios textos. Como es la típica tabla de claves para solucionar la relación Muchos a Muchos, tenía resuelto el tema de la siguiente manera:

En pantalla figuraba como título el del TEXTO
Debajo, un listado con los autores mencionados, con una opción al final para quitarlos.
En otro listado, debajo, el listado de autores donde estaban todos los autores que no habían sido incluidos en el texto, con una opción para agregarlo al final, de modo que al agregar el autor al texto, dejaba de figurar en los disponibles para figurar en el listado de arriba.

El problema es que al usuario no le gustó esta modalidad y pide que el listado de autores disponibles para agregar tenga una casilla de verificación al final para tildar uno por uno los que quiere asociar al texto, guardando luego.

Lo que necesito aquí es que los checkbox se generen de manera dinámica cuando se realiza la consulta a la tabla autores (menos los ya utilizados) y no le encuentro vuelta en Symfony.
Si el Form se asocia directamente a una Entity o Model, no tengo forma de tener un Model que refleje el resultado de la consulta, no se si me explico.

Soy bastante nueva en esto y no le encuentro la punta para empezar a trabajarlo. Me podrían dar alguna sugerencia?

Desde ya, muchísimas gracias.
Asi de entrada algunas cosas que te pueden ayudar:
Los campos de tipo Entity se pueden representar como selects o checkbox: http://symfony.com/doc/current/refer...es/entity.html. Puedes manipular de forma dinámica tu form mediante eventos: http://symfony.com/doc/current/cookb...ification.html
Puedes crear un form sin que este ligado a una entidad en particular: http://symfony.com/doc/current/book/...ithout-a-class

Si tienes algo echo compártelo mas de alguno en el foro te puede orientar.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 17/02/2014, 10:52
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Generación dinámica de campos de formulario

Hola. Gracias por tu respuesta.

Después de lidiar un poco con diferentes opciones, tengo lo siguiente:

Código PHP:
$builder
            
->add('edTextoid''hidden')
            ->
add('edAutorCollec''entity', array(
                
'class'=>'TextosBundle:Autores'
                
'query_builder'=>function(DoctrineORMEntityRepository $er){
                    return 
$er->createQueryBuilder('e')
                    ->
orderBy('e.descrip'); },
                        
'property'=>'id',
                        
'expanded'=>true,
                        
'multiple'=>true
                        ) 
El formulario lo dejé sin asociar a entidad de la siguiente forma
Código PHP:
$resolver->setDefaults(array(
            
'data_class' => null
        
)); 
Mi problema ahora es que cuando voy a renderizar el formulario, aparecen los checkboxes pero todos con el nombre concatenado con el Value del elemento.
De la misma forma, los tags de cada check terminan siendo el Id del elemento, aún no encuentro cómo mostrar de forma personalizada estos campos en Twig.

Estoy buscando para iterar por la colección de checkboxes que envía, pero no he dado aún con el asunto.

Aluna pista, buen tutorial para mirar?
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #4 (permalink)  
Antiguo 21/02/2014, 15:19
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Generación dinámica de campos de formulario

Hola. continúan los problemas.

Estuve intentando otra opción, que es generar el form desde el controlador con el siguiente ejemplo:

Código PHP:
use SymfonyComponentHttpFoundationRequest;
// ...
 
public function contactAction(Request $request)
{
    
$defaultData = array('message' => 'Type your message here');
    
$form $this->createFormBuilder($defaultData)
        ->
add('name''text')
        ->
add('email''email')
        ->
add('message''textarea')
        ->
getForm(); 
El problema es que, como debería tener campos dinámicos (Los checks con los id de autores para reconocer cuáles pertenecern al texto) necesitaría poder interrumpir la creación del formulario para generar esos campos dinámicamente de acuerdo a una consulta.
algo como esto:

Código PHP:
use SymfonyComponentHttpFoundationRequest;
// ...
 
public function contactAction(Request $request)
{
    
$defaultData = array('message' => 'Type your message here');
    
$form $this->createFormBuilder($defaultData)
        ->
add('name''text')
        foreach(
$autores as $autor):
               ->
add('checkbox''autor'.$autor("id"))
        endforeach
        ->
add('message''textarea')
        ->
getForm(); 
Esto no funciona y no encuentro la forma de generar dinámicamente los campos que necesito.

A alguien se le ocurre alguna forma?

Mil gracias.
__________________
Why can't we not be sober?
www.partitorium.com.ar

Etiquetas: campos, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:05.