Pour mettre en place un système d'inscription simple, Symfony fournit la commande php bin/console make:registration-form qui génère tout ce qu'il faut pour avoir un formulaire accessible depuis /register dans la barre de recherche.
Mais il se peut qu'en chargeant la page, il soit affiché ceci :
Il nous est dit que la route /register n'existe pas alors que nous venons de la créer avec la commande make:registration-form, nous allons voir comment vérifier les choses et résoudre ce problème.
Vérifier l'existence de la route
Pour vérifier si la route existe, dans un terminal nous allons taper la commande suivante :
php bin/console debug:router
Cette commande nous affiche les routes disponibles, dans mon cas j'obtiens ces informations :
On peut voir que la route existe comme l'indique :
register ANY ANY ANY /register
Si la route n'est pas listée, rentrer la commande qui génère le formulaire à nouveau devrait régler l'ajouter à la liste. Si le problème est toujours présent malgré la route, nous allons passer à la suite.
Vérifier la configuration du pare-feu
Le pare-feu peut poser souci si une configuration bloque l'accès de /register pour certains utilisateurs, pour ceci il faut aller vérifier le contenu du fichier security.yaml :
access_control:
- { path: ^/register, roles: ROLE_EXEMPLE }
Si /register n'apparait pas ou que la configuration n'est pas problématique, l'étape d'après devrait résoudre notre souci.
Problème avec la configuration serveur
Il se peut que ce soit un problème avec le serveur web Apache et l'utilisation d'un fichier .htaccess.
Pour régler ce souci, il existe un paquet apache-pack qui contient les règles de réécriture d'URL pour que tout fonctionne comme il faut avec Apache et que l'on peut installer comme ceci :
composer require symfony/apache-pack
Une fois installé, en retournant sur la page tout devrait fonctionner comme il faut :
Si ce n'est toujours pas le cas, il se peut que le cache ne soit pas encore rafraichi, il suffit de le vider avec :
php bin/console cache:clear
Nous savons maintenant comment comprendre et résoudre ce problème avec Apache en utilisant les outils proposés par Symfony.