Yo logre hacer esto:
/* GUARDAR FORMULARIOS EMBEBIDOS:
* Personalizacion de la funcion para salvar formularios embebidos
*/
public function saveEmbeddedForms($con = null, $forms = null)
{
if (is_null($con))
{
$con = $this->getConnection();
}
if (is_null($forms))
{
$forms = $this->embeddedForms;
}
foreach ($forms as $key => $form)
{
if ($form instanceof sfFormPropel)
{
$form->bind($this->values[$key]);
$form->doSave($con);
$form->saveEmbeddedForms($con);
}
else
{
$this->saveEmbeddedForms($con, $form->getEmbeddedForms());
}
}
}
/* GUARDAR FORMULARIO:
* Personalizacion del metodo para salvar formularios
*/
protected function doSave($con = null)
{
if (is_null($con))
{
$con = $this->getConnection();
}
$this->updateObject();
//FORMULARIOS EMBEBIDOS//
$this->saveEmbeddedForms($con);
$forms = $this->getEmbeddedForms();
//obtener el id de denunciante y denunciado recien insertados
$denunciante_id = $forms['denunciante']->getObject()->getId();
$denunciado_id = $forms['denunciado']->getObject()->getId();
$this->getObject()->setDenuncianteId($denunciante_id);
$this->getObject()->setDenunciadoId($denunciado_id);
//VALORES ESTATICOS DEL FORMULARIO//
$empleado_id =
sfContext::getInstance()->getUser()->getEmpleadoUsuario('id');
$fecha = date('d').'-'.date('m').'-'.date('Y');
$correlativo = Denuncia::obtenerCorrelativo();
$this->getObject()->setEmpleadoId($empleado_id);
$this->getObject()->setFecha($fecha);
$this->getObject()->setCorrelativo($correlativo);
$this->getObject()->save($con);
}
Algunas cosas son muy muy personales de mi aplicacion, pero espero que
en lo general te sirva.
NOTA: los formularios denunciante y denunciado son los formularios
embebidos en el formulario de Denuncia.
Gebe escribió: