Bonjour à tous,

Je rencontre un petit problème sur une application développée en PHP, qui utilise certains composants de symfony & doctrine (routing, annotations...).

Sur mon Controller qui contient différentes actions, j'ai un conflit entre 2 routes qui à mon sens n'a pas lieu d'être...

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
/**
    * @Route("/composition/{composition_id}/{dupliquer}", name="composition")
     */
    public function index(int $composition_id)
    {
        // Do something
     }
 
 
/**
     * @return bool
     *
     * @Route("/composition/uploadMedia", name="uploadMedia")
     */
    public function uploadMedia()
    {
         // Do something
     }
Voici différents exemple selon la route que j'appelle...

http://www.exemple.com/composition/5
=> OK : la méthode index est appelée et l'id est bien récupéré

http://www.exemple.com/composition/uploadMedia
=> ERREUR : c'est toujours la méthode index qui est appelée (au lieu de uploadMedia), et une erreur de type est générée
Argument 2 passed to CompositionsController::composition() must be of the type int, string given
Pourtant sur une application symfony classique, je ne rencontre (presque) jamais ce genre de problèmes et le système de routing me renvoie vers la bonne méthode... y-a-t-il un paramétrage supplémentaire à effectuer ?

Bien sur je pourrais allonger volontairement la route du style /composition/truc/machin/uploadMedia pour esquiver le problème mais je trouve ça bof comme solution

Si quelqu'un a une suggestion je suis preneur