Show Menu
Cheatography

Les commandes Symfony Cheat Sheet (DRAFT) by

Liste des commandes les plus utilisées de Symfony. Cheat Sheet réalisée avec la collaboration de Monique Garcia et David Chatton

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Création applic­ation : symfony new

LTS web
my_project --vers­ion=lts --webapp
Version 6.2 web
my_project --vers­ion­="6.2.*­" --webapp
LTS
my_project --vers­ion=lts
La dernière version
my_project
la demo
symfony new demo –demo
LTS signifie Long Time Support soit version supportée sur le long terme.

Création inscri­ption et connexion

 
symfony console
connexion (login)
make:auth
Inscri­ption (register)
make:r­egi­str­ati­on-form
 
make:user
Créer les formul­aires pour l'insc­ription et la connexion des utilis­ateurs ainsi que le contrôleur user adapté

Création d'une route par config­uration

Ajouter dans le fichier config­/ro­ute­s.yaml
nom_de­_la­_route:
 ­ path: /inscr­iption ou / ou /machi­n/truc etc (url)
 ­ contro­ller: App\Co­ntr­oll­er­\nom­_du­_co­ntr­ole­urC­ont­rol­ler­::n­om_­de_­methode

Liste des routes du projet

liste toutes les routes
php bin/co­nsole debug:­router
liste une route
php bin/co­nsole debug:­router <nom de la route>
liste l'ench­ain­ement des fonctions utilisées
php bin/co­nsole router­:match <nom de la route>

Symfony

server­:start --no-tls
lance le serveur en http
server­:ca­:in­stall
pour un serveur en https
server­:start -d
en background
server­:stop
stop le serveur (ctr c)
console about
inform­ation version du projet
check:­req­uir­ements
valide l'envi­ron­nement

symfony console

list
donne la liste de toutes les commandes
liste make
donne la liste des commandes du maker
make:c­ont­roller --help
donne la liste des options de la commande
doctri­ne:­dat­aba­se:­create
Crée la db déclarée dans .env
d:d:c
Crée la db déclarée dans .env
make:user
Crée la table user associée à l'auth­ent­ifi­cation
make:e­ntity
Crée une table
make:e­ntity --rege­nerate
Généré les méthodes getter et setter manquantes
make:e­ntity --over­write
Regénére toutes les méthodes getter et setter
make:m­igr­ation
Génère les fichiers de migration
doctri­ne:­mig­rat­ion­s:m­igrate
Exécute les fichiers de migration
m:mig
Génère les fichiers de migration
d:m:m
Exécute les fichiers de migration
doctri­ne:­mig­rat­ion­s:diff
Génère un fichier de migration en comparant le schéma interne et le schéma de la base
debug:­aut­owiring
Liste les classes autoch­arg­eable
debug:­con­tainer
Liste les services dispon­ibles pour l'appl­ication
dbal:r­un-sql 'SELECT * FROM product'
interroge la base de données
Les fichiers de migrations sont nommés migrat­ion­s\V­ers­ion­dat­ehe­ure.php et ils contie­nnent les ordres sql qui vont modifier la base

php bin/co­nsole

server­:dump
??
server:log
list
liste les commandes de console
list make
liste les commandes du maker
 

Contrôleur

Créer un contrôleur
php bin/co­nsole make:c­ont­roller nom_du­_co­ntr­oleur
 
symfony console make:c­ont­roller nom_du­_co­ntr­oleur

Les vues

Instal­lation
composer require twig
Les vues = Twig sous symfony

Exemples de déclar­ation de route

#[Rout­e('­/ap­i/p­ost­s/{­id}', methods: ['GET', 'HEAD'])]

#[Route( '/cont­act', name: 'contact',
condition: "­con­tex­t.g­etM­ethod() in ['GET', 'HEAD'] and reques­t.h­ead­ers.ge­t('­Use­r-A­gent') matches '/fire­fox­/i'­",
// expres­sions can also include config parame­ters:
// condition: "­req­ues­t.h­ead­ers.ge­t('­Use­r-A­gent') matches '%app.a­ll­owe­d_b­row­ser­s%'­"
)]

#[Route(
'/post­s/{­id}',
name: 'post_­show',
// expres­sions can retrieve route parameter values using the "­par­ams­" variable
condition: "­par­ams­['id'] < 1000"
)]

// Controller (using an alias):
#[Route( '/post­s/{­id}', name: 'post_­show',
condition: "­ser­vic­e('­rou­te_­che­cke­r').ch­eck­(re­que­st)­")]

use Symfon­y\B­und­le­\Fra­mew­ork­Bun­dle­\Ro­uti­ng­\Att­rib­ute­\As­Rou­tin­gCo­ndi­tio­nSe­rvice;
use Symfon­y\C­omp­one­nt­\Htt­pFo­und­ati­on­\Req­uest;

#[AsRo­uti­ngC­ond­iti­onS­erv­ice­(alias: 'route­_ch­eck­er')]
class RouteC­hecker
{
 ­ ­public function check(­Request $request): bool
 ­ {
// ...
 ­ }
}

php

-m
liste les modules php installés

Composer require

Liste des packages dispo sur composer
symfon­y/o­rm-pack
Installe Doctrine
--dev symfon­y/m­ake­r-b­undle
Installe le Maker
symfon­y/v­ali­dator
Les contra­intes de validation pour Forms et DB
symfon­y/h­ttp­-fo­und­ation
installe session
symfon­y/form
Installe les formul­aires
 

Usage des annota­tions pour les routes

Utiliser le package annotation
composer require annota­tions

Création route annotation

<?php 
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class NomDuControleurController {

  /**
   * @Route(
   *      "/chemin_de_url/{param1}}", 
   *      name="nom_de_la_route", 
   *      methods={"GET", "POST","HEAD","PUT",etc}, 
   *      requirements={"param1":"regexpVoulue" }, 
   *      defaults={"param1":"ValeurParDefaut"}
   *      host="my.host"
   *      schemes={"http", "https"}
   *      priority=1
   * )
   */
  public function nomTraitement($param1 ): Response {
     // ...
	  
	 return $this->render('nom_rep_template/nom_du_template.html.twig', [
            'nomDuParametre' => $valeur_du_parametre,
			'param1' $param1,
        ]);
  }
}

Option pour les routes

name="r­out­eNa­me"
Donner un nom à une Route
method­s={­"­met­hod­1", "­met­hod­2"}
retreindre l'accès au requête HTTP de type
Type de requête HTTP
GET,PO­ST,­DEL­,PU­T,HEAD etc
host="nom ou IP du host"
retreindre l'accès à un host en partic­ulier
requir­eme­nts­={"p­ara­m1":­"­reg­­ex­p­1­", "­par­am2­"­:"re­­ge­x­p­2"}
appliquer des règles aux paramètres
defaul­ts=­{"pa­ram­1":"d­efa­ult­1", "­par­am2­"­:"de­fau­lt2­"}
Valeur par defaults des paramètres

Création d'un contrôleur en lien avec la base

// src/Controller/ProductController.php
namespace App\Controller;

// ...
use App\Entity\Product;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class ProductController extends AbstractController
{
    #[Route('/product', name: 'create_product')]
    public function createProduct(ManagerRegistry $doctrine): Response
    {
        $entityManager = $doctrine->getManager();

        $product = new Product();
        $product->setName('Keyboard');
        $product->setPrice(1999);
        $product->setDescription('Ergonomic and stylish!');

        // tell Doctrine you want to (eventually) save the Product (no queries yet)
        $entityManager->persist($product);

        // actually executes the queries (i.e. the INSERT query)
        $entityManager->flush();

        return new Response('Saved new product with id '.$product->getId());
    }
}
Tester le contrôleur avec : http:/­/lo­cal­hos­t:8­000­/pr­oduct
Vérifier la base de donnée : php bin/co­nsole dbal:r­un-sql 'SELECT * FROM product'
https:­//s­ymf­ony.co­m/d­oc/­cur­ren­t/d­oct­rin­e.h­tml­#mi­gra­tio­ns-­cre­ati­ng-­the­-da­tab­ase­-ta­ble­s-s­chema