1 - Live Coding : Bien démarrer avec Symfony 5.1

13 juin 2020 - : PHP Tutoriel Symfony Live-Coding - : 0 commentaire - Controllers Framework Base de données PHP Symfony Live-Coding

Visualisez les fichiers de cette série sur GitHub

Dernière modification le 13 juin 2020

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

Visualisez les fichiers de cette série sur GitHub

Partager

Partager sur Facebook Partager sur Twitter Partager sur LinkedIn

Commentaires

Ecrire un commentaire

Pas encore de commentaire

Ecrire un commentaire