Skip to content

A guide to getting started with Symfony 7 / Guide pour prendre en main facilement Symfony 7

Notifications You must be signed in to change notification settings

axelleP/QuickGuide-Symfony-7

Repository files navigation

👨‍💻 Symfony 7 - Quick Guide 👩‍💻

Français

[🚀 Aperçu rapide - exemples de code 🚀]

[đź“š DĂ©tail đź“š]

1) Lancement

Environnement :

  • PHP : >=8.2
  • MySQL : 8.0.27

DĂ©marrage : symfony server:start => site accessible sur http://localhost:8000/
ArrĂŞt : symfony server:stop

2) Configuration

  • ajouter l'extension "TWIG pack" de Bajdzis sur son Ă©diteur
  • fichiers de configuration :
    • /config
    • .env, .env.test, ...
    • configurer la langue par dĂ©faut du site : config\packages\translation.yaml
  • installation de fichiers :
    • composer install
    • personnaliser les pages d'erreurs :
      • exĂ©cuter composer require symfony/twig-pack
      • redĂ©finir les pages dans templates\bundles\TwigBundle\Exception...
    • utiliser des filtres Twig :
      • date, nombre : composer require twig/intl-extra
      • chaĂ®ne : composer require twig/string-extra

Plus de détails dans config\packages\security.yaml :

  • password_hashers : on peut ajouter une classe pour que Symfony hashe automatiquement le mot de passe (si l'attribut est != de "password" il faudra le paramètrer)
  • providers : listes des fournisseurs utilisateurs. Chaque fournisseur indique ou charger les utilisateurs et par quoi les authentifier
  • firewalls :
    • dev : dĂ©finition des accès aux urls en env. dev
    • main : dĂ©finit pour un provider user la façon de l'authentifier (ex. appel d'un formulaire ou d'une route)
  • access_control : dĂ©finit l'accès Ă  des routes selon le rĂ´le utilisateur
  • when@test : permet de surcharger la configuration avec des paramètres diffĂ©rents selon l'env.

3) Gestion d'une base de données

Configuration :

  • composer require symfony/orm-pack
  • composer require --dev symfony/maker-bundle
  • modifier DATABASE_URL dans son .env

Création de la base :

  • php bin/console doctrine:database:create

Création d'une entité :

  • php bin/console make:entity
  • complĂ©ter le fichier de l'entitĂ© gĂ©nĂ©rĂ©e (ex. ajouter un unique)

Gestion des migrations :

  • crĂ©er une migration : php bin/console make:migration
  • exĂ©cuter les migrations : php bin/console doctrine:migrations:migrate
  • annuler la dernière migration : php bin/console doctrine:migrations:migrate prev
  • revenir Ă  une migration spĂ©cifique : php bin/console doctrine:migrations:migrate 'DoctrineMigrations\Version20240411143108'

4) Création d'un système d'authentification utilisateur

5) Commandes

  • information :
    • lister les commandes disponibles : php bin/console
    • avoir le dĂ©tail d'une commande en rajoutant --help. ex. : php bin/console doctrine:fixtures:load --help
    • lister les routes dĂ©finies : php bin/console debug:router
  • actions spĂ©cifiques :
    • nettoyer le cache : php bin/console cache:clear
    • lancer le sass : php bin/console sass:build --watch
  • crĂ©ation :
    • CRUD (contrĂ´leur/liste/vue/formulaire/...) pour une entitĂ© donnĂ©e : php bin/console make:crud
    • contrĂ´leur : php bin/console make:controller HomeController
    • modèle : php bin/console make:entity
    • formulaire dans une classe : php bin/console make:form
    • listener sur les requĂŞtes : php bin/console make:listener LocaleListener puis choisir kernel.request
    • donnĂ©es de tests :
      • installer la bibliothèque fixture : composer require orm-fixtures --dev
      • utiliser faker : composer require fakerphp/faker
      • crĂ©er une fixture : php bin/console make:fixture
      • lancer les fixtures :
        • supprime d'abord toutes les donnĂ©es en base : php bin/console doctrine:fixtures:load
        • conserve toutes les donnĂ©es en base : php bin/console doctrine:fixtures:load --append
      • lancer les fixture appartenant Ă  un groupe spĂ©cifique : php bin/console doctrine:fixtures:load --group=user (voir la doc pour configurer la classe fixture)
  • commande :
    • crĂ©ation : php bin/console make:command
    • lancement : php bin/console app:get-joke
  • email :
    • tester l'envoi sans code : php bin/console mailer:test someone@example.com
    • consommer les messages : php bin/console messenger:consume async
    • consommer un seul message : php bin/console messenger:consume async --limit 1
  • tests : Attention il faut une base de donnĂ©es de test (ex. : symfony_7_guide_test)
    • configurer son .env.test
    • crĂ©er un test : php bin/console make:test
    • lancer les tests : php bin/phpunit

6) Bundle

1. FOSCKEditorBundle

Utilisations possibles :

  • sans licence en installant la version 4.22.0
  • avec la licence GPL en open source (gratuit avec inscription)
  • avec une licence commerciale pour plus de fonctionnalitĂ©s

Installation :

  • composer require friendsofsymfony/ckeditor-bundle avec l'option yes
  • version sans licence : php bin/console ckeditor:install --tag=4.22.0 avec l'option drop
  • si on utilise Symfony flex : php bin/console assets:install public

Documentation :

7) Compléments

  • un fichier se trouvant dans src/... doit avoir comme namespace App\...

8) Documentation

Certaines pages affichent une version antérieure de symfony, tant qu'elles sont maintenues on peut s'en servir.
Privilégier d'abord l'overview puis la barre de recherche (taper le début du mot pour élargir le résultat ou taper avec 1 ou 2 mots-clés entier).
Ne pas hésiter à aller directement sur le site des bibliothèques si possible.

English

[🚀 Quick overview - code examples 🚀]

[đź“š Detail đź“š]

1) Launch

Environment :

  • PHP : >=8.2
  • MySQL : 8.0.27

Start : symfony server:start => website accessible on http://localhost:8000/
Stop : symfony server:stop

2) Configuration

  • add the Bajdzis "TWIG pack" extension to its editor
  • configuration files :
    • /config
    • .env, .env.test, ...
    • configure the site's default language : config\packages\translation.yaml
  • file installation :
    • composer install
    • customise error pages :
      • execute composer require symfony/twig-pack
      • redefine pages in templates\bundles\TwigBundle\Exception...
    • use Twig filters :
      • date, number : composer require twig/intl-extra
      • string : composer require twig/string-extra

More details in config\packages\security.yaml :

  • password_hashers : you can add a class so that Symfony automatically hashes the password (if the attribute is != of "password" you'll need to set it)
  • providers : lists of user providers. Each provider indicates where to load users and how to authenticate them
  • firewalls :
    • dev : definition of access to urls in dev env.
    • main : defines how a provider user is to be authenticated (e.g. by calling a form or a route)
  • access_control : defines access to routes according to user role
  • when@test : allows the configuration to be overloaded with different parameters depending on the env.

3) Database management

Configuration :

  • composer require symfony/orm-pack
  • composer require --dev symfony/maker-bundle
  • modify DATABASE_URL in its .env file

Database creation :

  • php bin/console doctrine:database:create

Entity creation :

  • php bin/console make:entity
  • complete the generated entity file (e.g. add a unique)

Migration management :

  • migration creation : php bin/console make:migration
  • execute migrations : php bin/console doctrine:migrations:migrate
  • cancel the last migration : php bin/console doctrine:migrations:migrate prev
  • return to a specific migration : php bin/console doctrine:migrations:migrate 'DoctrineMigrations\Version20240411143108'

4) Creation of a user authentication system

5) Commands

  • information :
    • list available commands : php bin/console
    • get the details of a command by adding --help. e.g.: php bin/console doctrine:fixtures:load --help.
    • list defined routes : php bin/console debug:router
  • specific actions :
    • clean the cache : php bin/console cache:clear
    • launch the sass : php bin/console sass:build --watch
  • creation :
    • CRUD (controller/list/view/form/...) for a given entity : php bin/console make:crud
    • controller : php bin/console make:controller HomeController
    • model : php bin/console make:entity
    • form in a class : php bin/console make:form
    • listener on requests : php bin/console make:listener LocaleListener then choose kernel.request
    • test data :
      • install the fixture library : composer require orm-fixtures --dev
      • use faker : composer require fakerphp/faker
      • create a fixture : php bin/console make:fixture
      • launch fixtures :
        • first deletes all the data in the database : php bin/console doctrine:fixtures:load
        • preserve all data in database : php bin/console doctrine:fixtures:load --append
      • launch fixtures belonging to a specific group : php bin/console doctrine:fixtures:load --group=user (see the documentation for configuring the fixture class)
  • command :
    • creation : php bin/console make:command
    • launch : php bin/console app:get-joke
  • email :
    • test sending without code : php bin/console mailer:test someone@example.com
    • consume messages : php bin/console messenger:consume async
    • consume a single message : php bin/console messenger:consume async --limit 1
  • tests : Please note that you need a test database (e.g. symfony_7_guide_test).
    • configure its .env.test
    • create a test : php bin/console make:test
    • launch tests : php bin/phpunit

6) Bundle

1. FOSCKEditorBundle

Possible uses :

  • without licence by installing version 4.22.0
  • with an open source GPL licence (free with registration)
  • with a commercial licence for more functions

Installation :

  • composer require friendsofsymfony/ckeditor-bundle with the yes option
  • unlicensed version : php bin/console ckeditor:install --tag=4.22.0 with the drop option
  • if you use Symfony flex : php bin/console assets:install public

Documentation :

7) Complements

  • a file located in src/... must have App\... as its namespace

8) Documentation

Some pages display an earlier version of symfony, but as long as they are maintained, you can use them.
Use the overview first, then the search bar (type the beginning of the word to broaden the result or type in 1 or 2 whole keywords).
Don't hesitate to go directly to the library website if possible.

About

A guide to getting started with Symfony 7 / Guide pour prendre en main facilement Symfony 7

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published