Hola,
Si estas cargando esto en el controller "new Categoria", estas creando un nuevo objeto de esto, por lo tanto viene vacio, es logico que no te deje nada seleccionado.
Si ya tienes datos insertados en la Base de Datos, debes rescatarlos para que queden "cargados" en tu objeto Categoria. Por ejemplo
Inserte una carrera en la Base, en mi entidad tengo 3 campos
- Id (Autonumerico)
- Nombre
- Año
Teniendo el ID busco la carrera
Código HTML:
Ver original$em = $this->getDoctrine()->getManager();
//Find existe por defecto
$entity = $em->getRepository('ANPruebaBundle:Carrera')->find($id);
if (!$entity) {
throw $this->createNotFoundException('No encontro nada.');
}
//Crea el formulario con los datos de la entidad
$form = $this->createForm(new CarreraType(), $entity);
Entonces, si la encontro, te retornara un objeto entidad con todos los datos cargados, me entiendes?
A y lo otro, no ocupes guiones bajos ya que symfony los reemplaza o mejor dicho los quita u omite.
Por ultimo, viendo tus relaciones deberian estar asi
Código HTML:
Ver original//Producto
/**
* @ORM\ManyToOne(targetEntity="Categoria", inversedBy="producto")
* @ORM\JoinColumn(name="categoriaid", referencedColumnName="idcategoria")
*/
protected $categoriaid; //Idealmente ocupar el mismo nombre con que creas el campo (name)
Código HTML:
Ver original//Categoria
/**
* @ORM\OneToMany(targetEntity="Producto", mappedBy="categoriaid")
*/
protected $producto;
Tanto "inversedBy" como "mappedBy" hacen referencia a la variable definida y no al nombre del campo, EJ:
protected $categoriaid
protected $categoriaid
^^