public function executeEdit()
 {
     if ($this->getRequestParameter('layout', '')) {
         $this->setLayout('popup');
     }
     $this->tablaFicheros = TablaPeer::getTablaFicheros();
     $this->id_formulario_proviene = $this->getRequestParameter('id_formulario_proviene', null);
     $this->id_tabla_proviene = $this->getRequestParameter('id_tabla_proviene', null);
     $this->formulario = $this->getFormularioOrCreate();
     $this->items = $this->formulario->getArrayItems();
     if ($this->getRequest()->getMethod() == sfRequest::POST) {
         //GENERAMOS EL ID DEL FORMULARIO PARA QUE LO PUEDA COGER LA TAREA AL GUARDALA
         if ($this->formulario->getIdFormulario() == 0) {
             $this->saveFormulario($this->formulario);
         }
         $this->updateFormularioFromRequest();
         $this->saveFormulario($this->formulario);
         $this->getUser()->setFlash('notice', 'Las modificaciones se han guardado');
         if ($this->getRequestParameter('save_and_add')) {
             if ($this->id_formulario_proviene != null) {
                 return $this->redirect('formularios/create/?id_tabla=' . $this->formulario->getIdTabla() . "&id_formulario_proviene=" . $this->id_formulario_proviene);
             } else {
                 return $this->redirect('formularios/create/?id_tabla=' . $this->formulario->getIdTabla());
             }
         } else {
             if ($this->getRequestParameter('save_and_list')) {
                 /*$ruta=sfContext::getInstance()->getUser()->getAttribute('ruta_legedia',null);*/
                 $ruta = UsuarioPeer::getRuta();
                 if ($this->id_formulario_proviene != null) {
                     return $this->redirect('formularios/edit?id_formulario=' . $this->id_formulario_proviene);
                 } else {
                     $dir = $ruta . "/formularios/list/?filters[id_empresa]=" . $this->formulario->getTabla()->getIdEmpresa() . "&filters[id_tabla]=" . $this->formulario->getIdTabla() . "&filter=filter";
                     header("location: {$dir}");
                 }
                 exit;
                 //return $this->redirect('formularios/list');
             } else {
                 if ($this->id_formulario_proviene != null) {
                     return $this->redirect('formularios/edit?id_formulario=' . $this->id_formulario_proviene);
                 } else {
                     $pre = str_replace('formularios/edit', 'notificaciones/inscribir/id_fichero/', Notificaciones::selfURL());
                     if (isset($_POST['modelo']) && isset($_POST['sistema']) && isset($_POST['tip'])) {
                         header('Location: ' . $pre . $this->formulario->getIdFormulario() . '?model=' . $_POST['modelo'] . '&type=' . $_POST['tip'] . '&system=' . $_POST['sistema'] . '&redirect=1');
                     } elseif (isset($_POST['modelo']) && isset($_POST['sistema'])) {
                         header('Location: ' . $pre . $this->formulario->getIdFormulario() . '?model=' . $_POST['modelo'] . '&system=' . $_POST['sistema'] . '&redirect=1');
                     } else {
                         //echo "--".$this->formulario->getIdFormulario();exit();
                         return $this->redirect('formularios/edit?id_formulario=' . $this->formulario->getIdFormulario());
                     }
                 }
             }
         }
     } else {
         $this->tablas_auxiliares = array();
         if ($this->formulario->getIdFormulario() != 0) {
             //Obtengo si hay un campo de tipo Tabla cuya tabla sea esta y tenga el mostrar_en_padre
             $c = new Criteria();
             $c->AddJoin(CampoPeer::ID_CAMPO, RelCampoTablaPeer::ID_CAMPO, Criteria::JOIN);
             $c->AddJoin(RelCampoTablaPeer::ID_TABLA, TablaPeer::ID_TABLA, Criteria::JOIN);
             $id_empresa = sfContext::getInstance()->getUser()->getAttribute('idempresa', 0);
             $c->addAnd(TablaPeer::ID_EMPRESA, $id_empresa, Criteria::EQUAL);
             $c->addAnd(CampoPeer::TIPO, CampoPeer::ID_TABLA, Criteria::EQUAL);
             $c->addAnd(CampoPeer::MOSTRAR_EN_PADRE, 1, Criteria::EQUAL);
             $c->addAnd(CampoPeer::VALOR_TABLA, $this->formulario->getIdTabla(), Criteria::EQUAL);
             $campos_rel = CampoPeer::doSelect($c);
             foreach ($campos_rel as $campo_rel) {
                 //DEL CAMPO OBTENEMOS LA TABLA
                 $tablas_rel = $campo_rel->getRelCampoTablas();
                 $tabla_rel = $tablas_rel[0];
                 unset($tablas_rel);
                 $c = $this->getCriterio();
                 $c->addJoin(FormularioPeer::ID_FORMULARIO, ItemPeer::ID_FORMULARIO, Criteria::JOIN);
                 $c->addJoin(ItemPeer::ID_ITEM_BASE, ItemBasePeer::ID_ITEM_BASE, Criteria::JOIN);
                 $c->addAnd(ItemBasePeer::ID_CAMPO, $campo_rel->getIdCampo(), Criteria::EQUAL);
                 $c->addAnd(ItemPeer::ID_TABLA, $this->formulario->getIdFormulario(), Criteria::EQUAL);
                 $c->addAnd(FormularioPeer::ID_TABLA, $tabla_rel->getIdTabla(), Criteria::EQUAL);
                 $this->processSort(false);
                 $this->addSortCriteria($c);
                 $c->setDistinct();
                 $pager = new sfPropelPager('Formulario', sfConfig::get('app_listas_formularios'));
                 $pager->setPeerMethod('doSelectJoinTabla');
                 $pager->setCriteria($c);
                 $pager->setPage($this->getRequestParameter('page', 1));
                 $pager->init();
                 $this->tablas_auxiliares[] = array("forms" => $pager, "id_tabla" => $tabla_rel->getIdTabla());
             }
         }
         $this->labels = $this->getLabels();
     }
 }