Il peut vous arriver d’avoir besoin de connaître l’ID de l’objet édité dans un formulaire, et ce directement dans la classe xxxType.php (La classe de votre formulaire).
Voilà comment récupérer dans un premier temps l’ID de l’objet dans la méthode buildForm (dans notre exemple il s’agit d’un objet Tag):
public function buildForm(FormBuilder $builder, array $options) { $idTag= $builder->getData()->getId();
Une fois récupéré, il est possible de le passer dans le Query Builder Doctrine de la manière suivante:
$builder->add('parent', 'entity', array( 'class' => 'Novaway\\CmsBundle\\Entity\\Tag', 'query_builder' => function(EntityRepository $er) use ($idTag) { $qb = $er->createQueryBuilder('t') ->where('t.parent IS NULL'); if (!is_null($idTag)) { $qb->where('t.id != :id') ->setParameter('id', $idTag); } return $qb->orderBy('t.title', 'ASC'); }, 'required' => false, 'empty_value' => '= Parent =' ));
Voilà une astuce bien pratique pour afficher du contenu plus avancé dans les widgets entity par exemple.
Merci ! Ca m’a été très utile.