Bonjours, j'ai réaliser un petit projet , et je n'arrive pas a faire un formulaire qui va récupéré la liste des chef d’équipe qui un est un champ présent dans mes 2 base de donne horaire poste,

j'ai fait une requête sur les 2 table avec une jointure je souhaite tout récupéré par le champs chef d’équipe avec un bouton déroulant sur l'interface voici mon code aider moi s'il vous plaie ;

controleur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
**
 * @Route("/poste")
 */
class PosteController extends Controller
{
    /**
     * @Route("/", name="poste_index", methods={"GET","POST"})
     * @param PosteRepository $posteRepository
     * @return Response
     */
   public function index(PosteRepository $posteRepository): Response
    {
        return $this->render('poste/index.html.twig', [
            'postes' => $posteRepository->findAll(),
        ]);
}
 
  /**
     * @Route("/", name="index_2", methods={"GET","POST"})
     * @param Request $resquest
     * @param PosteRepository $posteRepository
     * @return Response
     */
    public function index_2 (Request $resquest, PosteRepository $posteRepository): Response
    {
        {
            $poste= new Poste();
            // creation du formulaire
 
            $form = $this->createForm(PosteType::class, $poste, array(
 
 
            // Il n'est pas mappé
 
            if ($form->isSubmitted() && $form->isValid()) {
 
                // Requête recupére la liste d'event campus
                $postes = $posteRepository->filter($this->$form->getChefEquipe('chef_equipe')->getData());
 
                // On redirige vers la  vue
                return $this->render('poste/filtreChef.html.twig', ['postes' => $postes, 'form' => $form->createView()]);
            }
            return $this->render('poste/filtreChef.html.twig', ['postes' => $posteRepository, 'form' => $form->createView()]);
        }
    }
entity
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 /**
     * @ORM\Column(type="string", length=255)
     */
    private $chef_equipe;
 
    public function __construct()
    {
        $this->nom_prenom=new ArrayCollection();
        $this->chef_equipe = new ArrayCollection();
        $this->equipe =new ArrayCollection();
    }
repository
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public function FindByChef($chef_equipe)
    {
        // Requete avec jointure pour récupérer les employé par chef d'equipe
 
        $dql = 'SELECT p FROM App\Entity\Poste p
                INNER JOIN App\Entity\Horaire AS h WITH p.nom_prenom = h.nom_prenom
                where p.chef_equipe= :value
                order by p.nom_prenom ';
 
        var_dump($dql);
 
 
 
        return $this->getEntityManager()
            ->createQuery($dql)
            ->setParameter('chef_equipe', $this->)
            ->getResult();
 
    }
form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 public function buildForm(FormBuilderInterface $builder,  array $options )
    {
        //
        $builder->add('poste', PosteType::class, array([
            'class' => Poste::class,
            //Requete avec le query builder
            'query_builder' => function (PosteRepository $er) use ($options) {
                 return $er->FindByChef( $options['chef_equipe'] )
                    ->orderBy('p.nom_prenom', 'ASC');
            },
            'choice_label' => 'chef_equipe',]))
 
            ->add('nom_prenom')
            ->add('lundi')
            ->add('mardi')
            ->add('mercredi')
            ->add('jeudi')
            ->add('vendredi')
            ->add('samedi')
            ->add('dimanche')
            ->add('chef_equipe')
            ->add('equipe');
 
 
 
 
        $builder->add('submit', SubmitType::class, ['label' => 'Rechercher', 'attr' => ['class' => 'hollow button secondary']]);
 
    }