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

[SOLUCIONADO] Formulario embebido a 2 niveles

Estas en el tema de Formulario embebido a 2 niveles en el foro de Symfony en Foros del Web. Formulario embebido a 2 niveles Hola comunidad, estoy tratando de embeber un formulario que a su vez esta embebido en otro formulario. Logro que las ...
  #1 (permalink)  
Antiguo 02/08/2014, 21:13
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Formulario embebido a 2 niveles

Formulario embebido a 2 niveles
Hola comunidad, estoy tratando de embeber un formulario que a su vez esta embebido en otro formulario. Logro que las entidades se agreguen correctamente y puedo eliminarlas sin problema, pero por alguna razón no puedo editar el formulario del nivel 2.
Con este código:
Código PHP:

// resto del codigo

$Originals1N = new ArrayCollection();
 
$Originals2N = new ArrayCollection();

        foreach (
$Tienda->getClasificacionxy() as $Clasificxy) {
            
$Originals1N->add($Clasificxy);
            foreach (
$Clasificxy->getSubClasificacionxy() as $SubClasificxy) {
                
$Originals2N->add($SubClasificxy);
            }
        }
        
        
$Form->handleRequest($request); 
         if (
$Form->isValid()){
   
            foreach (
$Originals1N as $Original1N) {
                if (
false === $Tienda->getClasificacionxy()->contains($Original1N)) {
                     
$em->remove($Original1N);
                }
            }
            foreach (
$Originals2N as $Original2N) {     //*
                
foreach($Tienda->getClasificacionxy() as $Clasificacion){//*
                    
if (false === $Clasificacion->getSubClasificacionxy()->contains($Original2N)) { //*
                         
$em->remove($Original2N);  //*
                    
}  //*
                
}   //*
            
}     //*
                     
            
            
$em->persist($Tienda);
            
$em->flush();
            
 
// resto del codigo
        

Si comento las secciones con un asterisco comentado (//*), ya me deja editar el formulario del segundo nivel. Alguno tiene idea de por qué sucede esto y/o como solucionarlo? :/

De ante mano gracias :)

Última edición por Esdras_mtz; 02/08/2014 a las 22:02
  #2 (permalink)  
Antiguo 04/08/2014, 13:27
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Formulario embebido a 2 niveles

No se si esta sea la mejor forma de hacerlo, pero lo solucione así :S

Código PHP:
        $Originals1N = new ArrayCollection();
        
$Originals2N = new ArrayCollection();

       foreach (
$Tienda->getClasificacionxy() as $Datos) {
            
$Originals1N->add($Datos);
            foreach (
$Datos->getSubClasificacionxy() as $Datos2) {
            
$Originals2N->add($Datos2);
            }
        }
        
        
$Form->handleRequest($request); 
        if (
$Form->isValid()){
            foreach (
$Originals1N as $OriginalClass) {
                if (
false === $Tienda->getClasificacionxy()->contains($OriginalClass)) {
                     
$em->remove($OriginalClass);
                }
            }

            foreach (
$Tienda->getClasificacionxy() as $Clasificacion){
                foreach (
$Clasificacion->getSubClasificacionxy() as $SubClasificacion){
                    
$SubClasForm[]=$SubClasificacion->getId();
                }
            }
            foreach (
$Originals2N as $OrigSubC){
                
$remover=false;
                if (!
in_array($OrigSubC->getId(), $SubClasForm)) { 
                     
$remover=true;
                     
$IdSubClass=$OrigSubC;
                }
                if(
$remover){
                    
$em->remove($IdSubClass);
                }
            }

             
$em->persist($Tienda);
            
$em->flush();
          }

Saludos 

Etiquetas: formulario, niveles
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 09:11.