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 : /