Pour créer une page dans Symfony, il faut, au minimum :
Une route : pour faire le lien entre une URL et une méthode d'un contrôleur
Un contrôleur : qui contient des méthodes, chacune, en générale, associée à une route
Une méthode : permet l'execution d'une action précise, généralement en lien avec une route
Ce code est votre premier contrôleur (à déposer dans src/Controller
). Ce contrôleur est composé d'une méthode qui calcul un nombre aléatoire et retourne une réponse qui est du code HTML. Ce code n'utilise pas directement les vues de Symfony, et ne fonctionne pas (en tout cas il n'est pas possible de l'appeler), car il n'est pas lié à une route.
Il faut définir les routes. Il existe de nombreuses méthodes (yaml, xml, php, annotations, attributs (php8)) Pour information voici la syntaxe en YAML, à mettre dans le fichier routes.yaml.
Le site sera accessible à cette adresse sur votre serveur local
http://localhost/NomDuProjet/public/index.php/lucky/number (WampServeur - Windows)
http://localhost:8888/NomDuProjet/public/index.php/lucky/number (Mamp - MacOs)
http://localhost:8000/lucky/number (Serveur embarqué avec Symfony CLI)
Nous n'utiliserons pas cette solution pour la gestion des routes, pour des raisons de confort.
Nous allons utiliser les annotations, qui permettent une syntaxe plus simple, et une proximité entre la définition de la route et la définition de la méthode. Pour cela, il faut installer les annotations à Symfony avec la commande suivante :
Et modifier le contrôleur précédent en intégrant directement la route sous forme d'une annotation.
La syntaxe avec "#" se nomme un attribut au sens de PHP8 et supérieur. Cette syntaxe ne fonctionne pas avec une version PHP inférieure à PHP8. Auparavant vous devez utiliser la syntaxe suivante (dite annotations) :
Cette solution fonctionne, mais écrire tout le code HTML dans la méthode n'est pas très pratique. Nous devons donc écrire des vues. Par défaut, Symfony utilise Twig. Pour cela, il faut l'installer
Il faut ensuite modifier le contrôleur pour utiliser les vues.
Il faut maintenant écrire la vue.
Et Voilà !