muy buenas.
solicito ayuda para intentar resolver un problema que llevo como 6 horas intentando resolver.
Estoy realizando un formulario embebido 1:n. y estoy en el siguiente estado:
En la web me sale bien el formulario principal y puedo agregar y eliminar los formularios embebidos perfectamente.
Ahora bien, en el momento de de guardarlo todo, me guarda el principal pero los embebidos no.
el codigo del controlador createAction es el siguiente:
Código PHP:
$entity = new Estudio();
$form = $this->createForm(new EstudioType(), $entity);
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
foreach($entity->getPartesEstudio() as $parte){
$parte->setIdEstudio($entity);
$em->persist($parte);//
}
$em->flush();
He comprobado que dentro del foreach no entra y que $entity->getPartesEstudio() no devuelve null. pero ya no sque más probar.
La clase estudio es:
Código PHP:
<?php
namespace proyectobackendBundleEntity;
use DoctrineCommonCollectionsArrayCollection;
use DoctrineORMMapping as ORM;
/**
* Estudio
*/
class Estudio
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $nombre;
/**
* @var integer
*/
private $numPartes;
/**
* @var integer
*/
private $numDatosEstudio;
/**
* @var string
*/
private $descripcion;
/**
* @var boolean
*/
private $activa = 0;
protected $partesEstudio;
public function __construct()
{
$this->partesEstudio = new ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set nombre
*
* @param string $nombre
* @return Estudio
*/
public function setNombre($nombre)
{
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
*
* @return string
*/
public function getNombre()
{
return $this->nombre;
}
/**
* Set numPartes
*
* @param integer $numPartes
* @return Estudio
*/
public function setNumPartes($numPartes)
{
$this->numPartes = $numPartes;
return $this;
}
/**
* Get numPartes
*
* @return integer
*/
public function getNumPartes()
{
return $this->numPartes;
}
/**
* Set numDatosEstudio
*
* @param integer $numDatosEstudio
* @return Estudio
*/
public function setNumDatosEstudio($numDatosEstudio)
{
$this->numDatosEstudio = $numDatosEstudio;
return $this;
}
/**
* Get numDatosEstudio
*
* @return integer
*/
public function getNumDatosEstudio()
{
return $this->numDatosEstudio;
}
/**
* Set descripcion
*
* @param string $descripcion
* @return Estudio
*/
public function setDescripcion($descripcion)
{
$this->descripcion = $descripcion;
return $this;
}
/**
* Get descripcion
*
* @return string
*/
public function getDescripcion()
{
return $this->descripcion;
}
/**
* Set activa
*
* @param boolean $activa
* @return Estudio
*/
public function setActiva($activa)
{
$this->activa = $activa;
return $this;
}
/**
* Get activa
*
* @return boolean
*/
public function getActiva()
{
return $this->activa;
}
public function setPartesEstudio(ArrayCollection $partesEstudio = null)
{
$this->partesEstudio = $partesEstudio;
}
public function getPartesEstudio()
{
return $this->partesEstudio;
}
public function __toString (){
return $this->nombre;
}
}
y la clase parteEstudio es:
Código PHP:
<?php
namespace proyectobackendBundleEntity;
use DoctrineORMMapping as ORM;
/**
* ParteEstudio
*/
class ParteEstudio
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $nombre;
/**
* @var integer
*/
private $numOrden;
/**
* @var integer
*/
private $numPreguntas;
/**
* @var string
*/
private $titulo;
/**
* @var boolean
*/
private $guardarTiempoRespuesta = 0;
/**
* @var string
*/
private $tipoTratamientoDatos;
/**
* @var integer
*/
private $numPreguntasDePrueba;
/**
* @var \proyecto\backendBundle\Entity\Estudio
*/
private $idEstudio;
/**
* @var \proyecto\backendBundle\Entity\TipoPregunta
*/
private $idTipoPregunta;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set nombre
*
* @param string $nombre
* @return ParteEstudio
*/
public function setNombre($nombre)
{
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
*
* @return string
*/
public function getNombre()
{
return $this->nombre;
}
/**
* Set numOrden
*
* @param integer $numOrden
* @return ParteEstudio
*/
public function setNumOrden($numOrden)
{
$this->numOrden = $numOrden;
return $this;
}
/**
* Get numOrden
*
* @return integer
*/
public function getNumOrden()
{
return $this->numOrden;
}
/**
* Set numPreguntas
*
* @param integer $numPreguntas
* @return ParteEstudio
*/
public function setNumPreguntas($numPreguntas)
{
$this->numPreguntas = $numPreguntas;
return $this;
}
/**
* Get numPreguntas
*
* @return integer
*/
public function getNumPreguntas()
{
return $this->numPreguntas;
}
/**
* Set titulo
*
* @param string $titulo
* @return ParteEstudio
*/
public function setTitulo($titulo)
{
$this->titulo = $titulo;
return $this;
}
/**
* Get titulo
*
* @return string
*/
public function getTitulo()
{
return $this->titulo;
}
/**
* Set guardarTiempoRespuesta
*
* @param boolean $guardarTiempoRespuesta
* @return ParteEstudio
*/
public function setGuardarTiempoRespuesta($guardarTiempoRespuesta)
{
$this->guardarTiempoRespuesta = $guardarTiempoRespuesta;
return $this;
}
/**
* Get guardarTiempoRespuesta
*
* @return boolean
*/
public function getGuardarTiempoRespuesta()
{
return $this->guardarTiempoRespuesta;
}
/**
* Set tipoTratamientoDatos
*
* @param string $tipoTratamientoDatos
* @return ParteEstudio
*/
public function setTipoTratamientoDatos($tipoTratamientoDatos)
{
$this->tipoTratamientoDatos = $tipoTratamientoDatos;
return $this;
}
/**
* Get tipoTratamientoDatos
*
* @return string
*/
public function getTipoTratamientoDatos()
{
return $this->tipoTratamientoDatos;
}
/**
* Set numPreguntasDePrueba
*
* @param integer $numPreguntasDePrueba
* @return ParteEstudio
*/
public function setNumPreguntasDePrueba($numPreguntasDePrueba)
{
$this->numPreguntasDePrueba = $numPreguntasDePrueba;
return $this;
}
/**
* Get numPreguntasDePrueba
*
* @return integer
*/
public function getNumPreguntasDePrueba()
{
return $this->numPreguntasDePrueba;
}
/**
* Set idEstudio
*
* @param \proyecto\backendBundle\Entity\Estudio $idEstudio
* @return ParteEstudio
*/
public function setIdEstudio(proyectobackendBundleEntityEstudio $idEstudio = null)
{
$this->idEstudio = $idEstudio;
return $this;
}
/**
* Get idEstudio
*
* @return \proyecto\backendBundle\Entity\Estudio
*/
public function getIdEstudio()
{
return $this->idEstudio;
}
/**
* Set idTipoPregunta
*
* @param \proyecto\backendBundle\Entity\TipoPregunta $idTipoPregunta
* @return ParteEstudio
*/
public function setIdTipoPregunta(proyectobackendBundleEntityTipoPregunta $idTipoPregunta = null)
{
$this->idTipoPregunta = $idTipoPregunta;
return $this;
}
/**
* Get idTipoPregunta
*
* @return \proyecto\backendBundle\Entity\TipoPregunta
*/
public function getIdTipoPregunta()
{
return $this->idTipoPregunta;
}
}
Gracias de antemano y un saludo!!