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

[SOLUCIONADO] Agregar nuevos parametros a un $request

Estas en el tema de Agregar nuevos parametros a un $request en el foro de Symfony en Foros del Web. Hola nuevamente ya se que doy mucha lata, espero me puedan tener paciencia ^^ Mi pregunta es. Alguno sabe cómo recorrer el array ‘$request’ obtener ...
  #1 (permalink)  
Antiguo 28/02/2014, 13:46
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Agregar nuevos parametros a un $request

Hola nuevamente ya se que doy mucha lata, espero me puedan tener paciencia ^^
Mi pregunta es. Alguno sabe cómo recorrer el array ‘$request’ obtener los objetos dentro de un formulario embebido y a su vez generar setNuevoDato() a esos objetos? . Algo como esto

Código PHP:
$Jugador = new Jugador();      
        
$originalins = new ArrayCollection();        
        foreach (
$Jugador->getRegistroJugadorxy() as $registroJugador) {
             
$originalins->add($registroJugador);       
        }
$editForm->handleRequest($request); 
    if (
$editForm->isValid(){
          foreach (
$request as $objetos ){
                if (
$objeto  si_no_existe_dentro_de  $originalins ){ // compara si se agrego una nueva colección de formularios
                       
$objetos->setFechaInscripcion$fechadehoy)
                    }
           }
      } 
  #2 (permalink)  
Antiguo 01/03/2014, 16:10
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Agregar nuevos parametros a un $request

Cita:
Iniciado por Esdras_mtz Ver Mensaje
Hola nuevamente ya se que doy mucha lata, espero me puedan tener paciencia ^^
Mi pregunta es. Alguno sabe cómo recorrer el array ‘$request’ obtener los objetos dentro de un formulario embebido y a su vez generar setNuevoDato() a esos objetos? . Algo como esto

Código PHP:
$Jugador = new Jugador();      
        
$originalins = new ArrayCollection();        
        foreach (
$Jugador->getRegistroJugadorxy() as $registroJugador) {
             
$originalins->add($registroJugador);       
        }
$editForm->handleRequest($request); 
    if (
$editForm->isValid(){
          foreach (
$request as $objetos ){
                if (
$objeto  si_no_existe_dentro_de  $originalins ){ // compara si se agrego una nueva colección de formularios
                       
$objetos->setFechaInscripcion$fechadehoy)
                    }
           }
      } 
Hay varias formas, todo depende en que punto quieres hacer eso. La mas sencilla es antes de persistir los datos.
otra forma es usando eventos de doctrine: http://docs.doctrine-project.org/en/...ce/events.html o los de symfony: http://symfony.com/doc/current/cookb..._listener.html, hasta los eventos en los formularios te pueden servir: http://symfony.com/doc/current/cookb...ification.html
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 02/03/2014, 16:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Agregar nuevos parametros a un $request

No deberia ser necesario todo el trabajo "manual" que estas haciendo, con los formularios embebidos y unos bits de js deberia ser suficiente, como estas generando el formulario ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 02/03/2014, 18:41
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Busqueda Respuesta: Agregar nuevos parametros a un $request

Cita:
Hay varias formas, todo depende en que punto quieres hacer eso. La mas sencilla es antes de persistir los datos.
Otra forma es usando eventos de doctrine: http://docs.doctrine-project.org/en/...ce/events.html o los de symfony: http://symfony.com/doc/current/cookb..._listener.html, hasta los eventos en los formularios te pueden servir: http://symfony.com/doc/current/cookb...ification.html
Gracias por las ligas hhs los estoy checando pero se ven algo complicadas.

Cita:
No deberia ser necesario todo el trabajo "manual" que estas haciendo, con los formularios embebidos y unos bits de js deberia ser suficiente, como estas generando el formulario ?
JugadorType
Código PHP:
 {
        
$builder->add('nombre')
                ->
add('apellidoP')
                ->
add('apellidoM')
               
//...
                
->add('registroJugadorxy''collection', array(
                    
'type' => new RegistroJugadorType(),
                    
'allow_add'    => true,
                    
'by_reference' => false,
                    
'allow_delete' => true,
                  ))                
                ->
add('save''submit');
    } 
RegistroJugadorType
Código PHP:
 {       
        
$builder->add('X''submit', array(                                        
                                        
'attr'  => array('class' => 'btnBorrar button button-pill button-caution button-tiny ')                                        
                                    ))                 
                ->
add('numero')
                ->
add('posicion')
                ->
add('dt');
    } 
Estos son los formularios. Todo funciona perfectamente, puedo agregar y eliminar colecciones del formulario "RegistroJugadorType" mediante JQuery y la información se persiste como debe de ser al momento de hacer el flush(). Mi pequeño y tedioso problema con el que llevo mas de 3 semanas luchando es:
-Cuando quiero agregar valores a unos atributos no invocados dentro de "RegistroJugadorType" como son: "FechadeInscripcion" y "Pago"

En fecha lo puede solucionar con :
Código PHP:
 * @ORMHasLifecycleCallbacks()
/**
     * @ORM\PrePersist
     */
    
public function prePersist()
    {
        
$this->setFecha(new DateTime());
    } 
Pero con e campo "Pago" no se puede ya que este toma el costo de otra tabla llamada "Costos" y al momento de hacer la consulta dentro de "prePersist()" me marca error .Cabe mencionar que "Pago" y "Cosots" no tienen relación alguna.

Necesito algo como esto:
Código PHP:
$Jugador $em->getRepository('FutbolMainBundle:Jugador')->find($id);
$original = new ArrayCollection();
        
        foreach (
$Jugador->getRegistroJugadorxy() as $registroJugador) {
             
$original->add($registroJugador);       
        }
foreach (
$original as $registroJugador) { // Aqui recorro el ArrayCollection de los datos que actualmente existen en la BD nececito un foreach para el arrayCollection enviado del formulario
            
if (false === $Jugador->getRegistroJugadorxy()->contains ($registroJugador)) {   // No entiendo my bien este if , pero aqui me filtra y me deja trabajar con los objetos eliminados en el formulario.              
                
$registroJugador->setActivo(false); // Aqui puedo generar setters para modificar el valor de los atributos que han sido eliminados 

            

Pero para los formularios que se van agregando : /
  #5 (permalink)  
Antiguo 03/03/2014, 14:28
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Agregar nuevos parametros a un $request

Por fin di con la solución. Muchas gracias a los dos por su interés y participación ^^
Así lo resolví

Código PHP:

$Jugador 
$em->getRepository('FutbolMainBundle:Jugador')->find($id);
 
$original = new ArrayCollection();
        
        foreach (
$Jugador->getRegistroJugadorxy() as $registroJugador) {
             
$original->add($registroJugador);            
        }

if (
$editForm->isValid()) 
{
   foreach (
$editForm->getData()->getRegistroJugadorxy() as $FromData // Recorro el getData() para los subformularios que contenga getRegistroJugadorxy 
        
{            
             if( 
false === $original->contains($FromData)) // comparo se el objeto ya existía dentro de mi objeto $original y de no ser así, se considera que fue un objeto agregado mediante JQuery
            
{
                 
$FromData->setPrecio($Precio); // y aquí le asigno valores a los atributos que yo quiera dentro de ese nuevo objeto ^^
            
}
        }

Nuevamente gracias a los dos .
Saludos!!

Etiquetas: nuevos, parametros, request
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.