Hello,
Premier constat, tu déclares tes routes à deux endroits ! Dans le controlleur via les annotations, et également dans le fichier yaml. Il ne faut pas faire les deux.
Choisit la manière dans laquelle tu es le plus allaise.
Pour ma part je préfère déclarer les routes via annotations dans les controlleurs, c'est un choix purement personel, il n'y a pas un meiilleur choix que l'autre.
Autre chose, dans la route app_lucky_word, sur l'annotation tu n'as pas mis le "requirment" pour le paramêtre alors que tu le mets dans le fichier yaml.
Mis à part ça à première vu tout semble correct.
Pour déboguer que te donnes :
php bin/console --env=dev debug:router
Rien à voir, mais juste queslques constatations. Dans cette même route, tu mets en paramêtre tag la lang, et tu déclares un tableau avec une phrase, je constate 4 choses ici
- Le tableau je le déclarerais avec une constante dans ce cas, et je l'appelerait avec self::words
- Le tag déclaré ici semble correspondre à une locale, du coup j'utiliserais le paramêtre "_locale" dans la route si c'est bien ce que tu souhaites faire
- Le tableau correspond à des traductions, symfony à un translator qui fait ça très bien en utilisant le TranslatorInterface ainsi que les fichiers messages.fr.yml, messages.en.yml etc...
- Tu retournes une Exception code 500 pour le tag non trouvé, je retournerais plutôt un code 400 BadRequestHttpException, ou 404 NotFoundHttpException, une erreur 500 ne devrait pas être utilisé pour une mauvaise requête utilisateur mais uniquement pour un problème serveur
URL avec la locale en param : https://symfony.com/doc/current/translation/locale.html#the-locale-and-the-url
Paramêtre requis : https://symfony.com/doc/current/routing.html#parameters-validation
Translator : https://symfony.com/doc/current/translation.html