Formularios embebidos con una solucion y preguntas ^_^

8 views
Skip to first unread message

Julian Reyes

unread,
Nov 23, 2009, 2:46:51 PM11/23/09
to symfony-es
Hola a todos ya que estamos activos con los formularios embebidos, de todas las solcuiones hice una propia basado en lo que lei

cree una solucion con un ejercicio, para ello cree un schema nuevo y es este:

puntuacion:
id: ~
identificador:
descripcion:

logro_area:
  id: ~
  codigo:

logro_area_descripcion:
  id: ~
  logro_area_id:
  puntuacion_id:
  descripcion:

este es el esquema de los datos relacionados y ahora esto lo agregue a la clase LogroAreaForm

$detalles = $this->getObject()->getDetalle(); //este metodo consigue todos los LogroAreaDescripcion relacionados

    if($detalles){
       foreach ($detalles as $descripcion){
           $form = new LogroAreaDescripcionForm($descripcion);
           unset($form['logro_area_id'], $form['puntuacion_id']);
           $this->embedForm('Descripcion '.$descripcion->getPuntuacion(), $form); //El metodo getPuntuacion devuelve el campo identificador de                                                                                                                                //puntuacion en vez de su Id
       }
    }
    if($this->isNew()){
        $criteria = new Criteria();
        $notas = PuntuacionPeer::doSelect($criteria);
        foreach ($notas as $i => $nota){
            $des = new LogroAreaDescripcion();
            $this->getObject()->save();           
            $id_logro = $this->getObject()->getId();
            $des->setLogroAreaId($id_logro);
            $des->setPuntuacionId($nota->getId());
            $des->save();
            $form = new LogroAreaDescripcionForm($des);
            unset($form['logro_area_id'], $form['puntuacion_id']);
            $this->embedForm('Descripcion '.$nota->getIdentificador(), $form);
        }
    }

como ven me toca primero guardar el objeto de LogroArea antes de poder crear los LogroAreaDescripcion y a su vez para que me coja todo me toca guardar tambien los LogroAreaDescripcion para que me los muestre correctamente.

ahora esto me funciona bien, pero tiene un problema digamos que la persona quiere cancelar el proceso de creacion del objeto no lo ha guardado, ahi es donde falla esto puesto que ya lo guardo, ¿como hago para no tener que guardarlo?.

espero esto sirva y me puedan colaborar con mi inconveniente, pues he descubierto que necesito un monton de FORMULARIOS EMBEBIDOS EN ESTE PROYECTO!!!!

muchas gracias por su atencion

Germana Oliveira

unread,
Nov 23, 2009, 7:42:06 PM11/23/09
to symfo...@googlegroups.com
Julian Reyes escribió:
> guardado, ahi es donde falla esto puesto que ya lo guardo, *¿como hago
> para no tener que guardarlo?. *
>
No entiendo muy bien esto, porque como siempre lo he hecho: cuando el
usuari@ hace click en 'Guardar' estaria guardando el formulario y sus
embebidos, asi que no habria modo en que el usuario cancele el proceso
en la mitad.... o si??

Si puedes explicar un poco mas como funciona tu formulario o como
deberia funcionar.

Gracias
> espero esto sirva y me puedan colaborar con mi inconveniente, pues he
> descubierto que necesito un monton de FORMULARIOS EMBEBIDOS EN ESTE
> PROYECTO!!!!
>
> muchas gracias por su atencion
> >


--
Germana Oliveira

Movilnet: 0426 7457105
Digitel: 0412 0386159
Correo-e: germanaoliveirab_at_gmail.com
Blog: http://slcarabobo.wordpress.com
Usuario Linux : #493487

Carabobo, Venezuela.

Julian Reyes

unread,
Nov 23, 2009, 9:40:54 PM11/23/09
to symfo...@googlegroups.com
claro, como no

el formulario y sus embebids se guardan con solo pulsar el boton nuevo
(esta es su desventaja) y enseguida los muestra para terminar de
llenarlo, algo asi como una actualizacion, yo por lo menos dejo solo las
opciones cancelar(eliminar) y guardar, para que si el usuario cancela la
opcion elimine el objeto y no quede un objeto a medias.

pero lo que yo realmente quiero es como hacer para no tener que
guardarlo, ya que mis conocimientos en symfony son escasos

rosb

unread,
Nov 23, 2009, 9:57:12 PM11/23/09
to symfony-es
hola, puedes intentar lo siguiente:

Si no deseas guardar nada hasta cierto punto, puedes probar por
retornar los objetos que necesites y tenerlos a disposición en la
vista que tengas activa, usando el el objeto sfRoute por ejemplo, (no
se si puedes retornar varios objetos) y cuando ya tengas como quieres
púes llamas a todos los metodos que necesites para guardar.

Intento hacer un registro por lotes y esta es la primera opción que
pienso probar.

Saludos.
Reply all
Reply to author
Forward
0 new messages