Récupérer l’ID d’un objet dans un Form\Type Symfony2 pour le QueryBuilder Doctrine

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.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>