src/Form/SequenceType.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Competence;
  4. use App\Entity\Sequence;
  5. use App\Repository\CompetenceRepository;
  6. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. class SequenceType extends AbstractType
  11. {
  12.     public function buildForm(FormBuilderInterface $builder, array $options): void
  13.     {
  14.         $builder
  15.             ->add('titre')
  16.             ->add('Objectif')
  17.             ->add('Attendu')
  18.             ->add('prerequis')
  19.             ->add('refFiliere')
  20.             ->add('refCompetence'EntityType::class, [
  21.                 'class' => Competence::class,
  22.                 'multiple' => true,
  23.                 'query_builder' => function (CompetenceRepository $er) {
  24.                     $competences $er->createQueryBuilder('c')
  25.                         ->andWhere('c.refCompetence IS NOT NULL')
  26.                         ->getQuery()
  27.                        ->getResult();
  28.                     $idCompetence = [];
  29.                     /** @var Competence $competence */
  30.                     foreach ($competences as $competence){
  31.                         if(!in_array($competence->getRefCompetence()->getId(),$idCompetence)){
  32.                             $idCompetence[] = $competence->getRefCompetence()->getId();
  33.                         }
  34.                     }
  35.                     return $er->createQueryBuilder('c')
  36.                         ->andWhere('c.id NOT IN ('.implode(", ",$idCompetence).')');
  37.                 },
  38.             ])
  39.             ->add('refSavoirTechnologique')
  40.             ->add('periode')
  41.             ->add('refThemeSequence')
  42.             ->add('bilan')
  43.         ;
  44.     }
  45.     public function configureOptions(OptionsResolver $resolver): void
  46.     {
  47.         $resolver->setDefaults([
  48.             'data_class' => Sequence::class,
  49.         ]);
  50.     }
  51. }