Guardar varios formularios embebidos

129 views
Skip to first unread message

Germana Oliveira

unread,
Jan 5, 2010, 8:41:26 PM1/5/10
to symfony-es
Saludos!

Tengo dos formularios embebidos dentro de un formulario, y necesito
hacer lo siguiente:

Guardar el formularioEmbebido1, para luego Guardar el Formulario
(principal)... la cuestion se complica con el formularioEmbebido2 ya que
la tabla que maneja este formulario necesita de algunos datos del
formulario principal. Entonces lo que intento hacer es predecir el id
que necesito para el formularioEmbebido2:

....
// FORMULARIOS EMBEBIDOS
$fiscalizacion_resultado = new FiscalizacionResultado();
$num_fiscalizacion = FiscalizacionPeer::doCount( new Criteria() );
$fiscalizacion_resultado->setFiscalizacionId( ($num_fiscalizacion +
1) );

$fiscalizacion_resultado->setInspeccionId( $request->getParameter('orden')->getId() );

$this->saveEmbeddedForms($con);
$forms = $this->getEmbeddedForms();

.....

Luego guardo el formulario principal.

Pero el problema es que parece no estar 'seteando' el FiscalizacionId,
porque me da el siguiente error:

Unable to execute INSERT statement. [wrapped: SQLSTATE[23000]: Integrity
constraint violation: 1452 Cannot add or update a child row: a foreign
key constraint fails (`indepabis/fiscalizacion_resultado`, CONSTRAINT
`fiscalizacion_resultado_FK_1` FOREIGN KEY (`fiscalizacion_id`)
REFERENCES `fiscalizacion` (`id`))]

Que estoy haciendo mal???

GRACIAS

Claudio Brandolin

unread,
Jan 5, 2010, 10:00:50 PM1/5/10
to symfo...@googlegroups.com
Yo estoy teniendo teniendo mas o menos el mismo problema y no encuentro solucion al respecto. He probado varias cosas y no ha resultado nada. Si encuentro algo que funcione te lo comento. 
Gracias

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.






--
Claudio Brandolin

francisco

unread,
Jan 6, 2010, 11:03:11 AM1/6/10
to symfony-es
perooo, caballeros no entiendo, el formulario embebido representa
datos de registros que tienen dependencia con los datos de registros
del formulario principal, me imagino, por mucho que logren predecir el
id de la tabla principal, si este no existe antes en esa tabla, no
podran insertar en la segunda.

el error del mysql es claro, hay violacion de integridad referencial.

por que no guardan como es debido, primero el principal, obtienen el
id del objeto guardado y se lo establecen por default al segundo
formulario.


On 5 ene, 22:00, Claudio Brandolin <cgbrando...@gmail.com> wrote:
> Yo estoy teniendo teniendo mas o menos el mismo problema y no encuentro
> solucion al respecto. He probado varias cosas y no ha resultado nada. Si
> encuentro algo que funcione te lo comento.
> Gracias
>
> El 5 de enero de 2010 22:41, Germana Oliveira

> <germanaolivei...@gmail.com>escribió:

> > symfony-es+...@googlegroups.com<symfony-es%2Bunsu...@googlegroups.com>

Germana Oliveira

unread,
Jan 6, 2010, 6:37:35 PM1/6/10
to symfo...@googlegroups.com
Porque la teoria siempre es muy bonita, pero la realidad es otra...

y disculpen el comentario, pero de verdad que no he encontrada alguna
forma de cumplir con los requerimientos del desarrollo y que ademas se
adapte a la teoria.

Si pudieras decirme como guardo un formulario embebido a la vez, te lo
agradeceria mucho y resolveria mi problema

Claudio Brandolin

unread,
Jan 6, 2010, 10:51:53 PM1/6/10
to symfo...@googlegroups.com
Estuve probando y en symfony no tenes que setear el FiscalizacionId del hijo. El proceso de embeber el formulario hijo se hace en el config del form() y automaticamente el metodo save() guarda los formularios embebidor y asigna los id como corresponda.

Siempre se debe guardar el formulario padre primero y luego los hijos, sino va a dar error y eso es inevitable.

Lo que creo que es tu problema son "los datos" que necesitan las tablas hijas que estan en la tabla padre. Aca hay varias soluciones segun sean "los datos"

si "los datos" son los Ids no te hagas problema porque symfony se arregla.
si "los datos" son otra cosa, entonces deberias setear esos datos en los hijos luego que se graben en el padre.

Espero haber sido claro.

flopezlosada

unread,
Jan 7, 2010, 2:00:15 AM1/7/10
to symfony-es
Yo he resuelto algo parecido con lo que hacen en esta página (al final
del tutorial):
http://israelwebdev.wordpress.com/2009/05/04/how-to-embed-ajax-forms-in-symfony-12-admin-generator/
se trata de modificar el bind del formulario principal y asignarle al
formulario embebido el objeto creado en el principal. Claro, tienen
que estar relacionados de alguna manera.
suerte
saludos

On 7 ene, 04:51, Claudio Brandolin <cgbrando...@gmail.com> wrote:
> Estuve probando y en symfony no tenes que setear el FiscalizacionId del
> hijo. El proceso de embeber el formulario hijo se hace en el config del
> form() y automaticamente el metodo save() guarda los formularios embebidor y
> asigna los id como corresponda.
>
> Siempre se debe guardar el formulario padre primero y luego los hijos, sino
> va a dar error y eso es inevitable.
>
> Lo que creo que es tu problema son "los datos" que necesitan las tablas
> hijas que estan en la tabla padre. Aca hay varias soluciones segun sean "los
> datos"
>
> si "los datos" son los Ids no te hagas problema porque symfony se arregla.
> si "los datos" son otra cosa, entonces deberias setear esos datos en los
> hijos luego que se graben en el padre.
>
> Espero haber sido claro.
>
> El 6 de enero de 2010 20:37, Germana Oliveira

> <germanaolivei...@gmail.com>escribió:

> > <symfony-es%2Bunsu...@googlegroups.com<symfony-es%252Buns...@googlegroups.com>

Germana Oliveira

unread,
Jan 7, 2010, 6:21:18 PM1/7/10
to symfo...@googlegroups.com
Bueno el problema es que yo no se explicar mis requerimientos:

El formulario principal tiene (datos de tabla):
FISCALIZACION:
id
correlativo
fecha_inicio
persona_id
categoria_id

1er formulario embebido:
PERSONA:
id
identificacion
nombre
direccion
telefono

2do formulario embebido
FISCALIZACION_RESULTADO:
id
fiscalizacion_id
inspeccion_id
descripcion
resultado

El problema es que necesito primero guardar el 1er embebido para poder
tener el persona_id, luego el principal.... y alli es el problema que al
hacer saveEmbeddedForm salva ambos embebidos y entonces da el error con
fiscalizacion_id de FISCALIZACION_RESULTADO

Gracias

Germana Oliveira

unread,
Jan 7, 2010, 6:39:39 PM1/7/10
to symfo...@googlegroups.com
Bueno, es asunto lo dice casi todo, la cuestion esta en: que tan buena
practica sera usar el campo created_at como campo fecha para una tabla?

El caso es que en realidad no me interesa que el usuario sea el que
coloque la fecha, entonces en la mayoria de las tablas el campo fecha es
en realidad introducido por el sistema.

Reply all
Reply to author
Forward
0 new messages