Série : Symfony 5.1
Fichiers : https://github.com/NouvelleTechno/tutos-symfony5.1
Dans ce tutoriel nous allons voir comment bien démarrer un projet avec Symfony 5.1.
Comme dans tous les tutoriels, les approches proposées sont celles que j'utilise à titre personnel, pas forcément les meilleures pour vous mais elles fonctionnent.
Dans cette série nous allons travailler sur un site de petites annonces dont la structure de base de données sera la suivante
Nous aurons donc une table principale contenant les annonces, une table contenant les catégories d'annonces, liée sur elle-même permettant d'avoir des sous catégories, une table contenant les utilisateurs et une table permettant la réinitialisation de mots de passe.
Installer Symfony CLI
La première chose à faire est d'installer le client de ligne de commande (CLI) de Symfony. Il s'agit d'un exécutable qui permettra d'exécuter les différentes commandes de Symfony dans un terminal.
Rendez-vous sur le site de téléchargement de Symfony et sélectionnez la version adaptée à votre configuration.
Créer le projet Symfony
Nous allons maintenant créer notre projet Symfony en utilisant notre terminal.
Pour créer le projet, nous allons utiliser la commande suivante
symfony new --full petitesannonces
Dans cette commande, nous avons :
- symfony : exécutable Symfony CLI
- new : indique que nous souhaitons créer un nouveau projet
- --full : indique que nous souhaitons un squelette complet de site
- petitesannonces : nom du dossier dans lequel sera créé le projet
Nous pouvons également ajouter, si besoin, le numéro de version souhaitée :
- --version=lts : indique que nous souhaitons la version Long Term Support actuelle
- --version=4.4 : indique que nous souhaitons la version 4.4
Structure du projet
Une fois créé, le projet contient les dossiers suivants :
ATTENTION : suite à la publication de Doctrine 3 en juin 2020, le dossier /src/Migrations a été déplacé dans /migrations
Les dossiers contiendront donc :
- bin : les fichiers de console et de test
- config : les fichiers de configuration de Symfony
- public : les fichiers devant être accessibles depuis le navigateur (images, css, js...)
- src : le coeur de l'application, contiendra les Contrôleurs, Entités, Migrations, Formulaires...
- templates : les fichiers contenant le code HTML de l'application (Vues)
- tests : les fichiers de tests unitaires
- translations : les fichiers de traduction du site
- var : le cache et les logs
- vendor : les fichiers des dépendances et composants de symfony
Configurer et créer la base de données
Si vous avez besoin d'une base de données, vous devrez la configurer depuis le fichier ".env" situé à la racine du projet.
Dans ce fichier, repérez la ligne commençant par "DATABASE_URL" et modifiez la en fonction des besoins. Dans notre cas, la base de données s'appellera "petitesannonces" et sera sur le serveur local dont l'utilisateur est "root" sans mot de passe. La ligne en question sera donc
DATABASE_URL=mysql://root@127.0.0.1:3306/petitesannonces?serverVersion=5.7
Si la base de données n'existe pas, vous devrez la créer. Symfony CLI propose une commande utilisant Doctrine qui permet de la créer automatiquement.
Cette commande est
symfony console doctrine:database:create
Attention : dans la vidéo j'utilise "php bin/console", équivalent de "symfony console"
Démarrer le serveur de Symfony
Une fois le projet créé, nous pouvons utiliser Symfony CLI pour démarrer un serveur PHP spécifique. Nous allons également installer un certificat pour pouvoir utiliser des URLs en https.
La commande pour installer le certificat est
symfony server:ca:install
Quand le certificat est installé, démarrez votre serveur comme ceci
# Démarre le serveur en affichant les logs
symfony serve
# Démarre le serveur en arrière plan
symfony serve -d
Pour arrêter le serveur
symfony server:stop
Enfin, l'URL pour charger les pages sera, habituellement, https://127.0.0.1:8000
Premier contrôleur
La page d'accueil de notre projet nous indique qu'aucun contrôleur n'existe.
Nous allons donc créer notre premier contrôleur, que nous appellerons "MainController" qui contiendra la méthode appelant la page d'accueil.
La commande pour créer ce contrôleur sera
symfony console make:controller MainController
Son exécution créera le fichier "src/Controllers/MainController.php" ainsi que le dossier "main" dans "templates".
Nous allons modifier la méthode "index" de la façon suivante (dans l'annotation)
/**
* @Route("/", name="app_home")
*/
public function index(AnnoncesRepository $annoncesRepo)
{
return $this->render('main/index.html.twig', [
'controller_name' => 'MainController',
]);
}
Mettre en place l'authentification
Première chose que je fais après avoir mis en place un projet, c'est mettre en place l'authentification des utilisateurs. Pour ce faire, nous avons besoin de l'entité "Users" et des formulaires d'enregistrement et de connexion.
Une série de commandes vont nous aider à mettre tout ceci en place facilement.
Avec Symfony 5, nous avons également de nouvelles commandes qui permettent de mettre en place la réinitialisation de mot de passe ainsi que l'activation de compte par e-mail.
La première commande à exécuter va créer l'entité "Users"
symfony console make:user
Les différentes étapes de l'assistant sont détaillées dans la vidéo.
Nous utiliserons ensuite une commande qui nous permettra de mettre en place l'authentification des utilisateurs.
symfony console make:auth
Pour que les utilisateurs aient la possibilité de s'authentifier, il leur faut également pouvoir s'inscrire.
La commande ci-dessous permettra de créer le formulaire d'inscription.
symfony console make:registration-form
Il est ensuite nécessaire, si vous souhaitez faire activer les comptes par e-mail, d'installer un bundle de symfonycasts appelé "verify-email"
composer require symfonycasts/verify-email-bundle
Pour mettre en place la réinitialisation des mots de passe, nous allons également utiliser un bundle de symfonycasts comme ceci
composer require symfonycasts/reset-password-bundle
Ce bundle nous permettra donc de mettre en place la réinitialisation de mots de passe de la façon suivante
symfony console make:reset-password
Mettre à jour la base de données
Des modifications ont été apportées aux entités, il faut maintenant appliquer ces modifications dans la base de données.
Pour ce faire, 2 commandes sont à exécuter successivement
# Commande permettant de préparer la mise à jour
symfony console make:migration
# Commande modifiant la base de données
symfony console doctrine:migrations:migrate
Créer les entités
Nous terminerons ce premier tutoriel par la création des entités "Categories" et "Annonces".
La commande utilisée est
symfony console make:entity
Obtenir de l'aide
Pour obtenir de l'aide, vous pouvez accéder au serveur Discord pour une entraide par chat
Catégories : PHP Tutoriel Symfony Live-Coding symfony5
Mots-clés : Controllers Framework Base de données PHP Symfony Live-Coding symfony5 debuter install