Show Menu
Cheatography

Bases de Symfony Cheat Sheet by

Retrouvez ici les bases de Symfony : Controllers, Routes et HttpFoundation

Routing : Docume­ntation officielle

Retrouvez la docume­ntation officielle sur le Routing dans Symfony ici : https:­//s­ymf­ony.co­m/d­oc/­cur­ren­t/r­out­ing.html

Route sous forme d'anno­tation @Route

<?php 

use Symfony\Component\Routing\Annotation\Route;

class MonController {

  /**
   * @Route(
   *      "/URL-VOULUE/{param1}/{param2}", 
   *      name="nomDeLaRoute", 
   *      methods={"GET", "POST"}, 
   *      requirements={"param1":"regexpVoulue", "param2":"regexpVoulue"}, 
   *      defaults={"param1":"ValeurParDefaut"}
   *      host="my.host"
   *      schemes={"http", "https"}
   *      priority=1
   * )
   */
  public function myMethod($param1, $param2) {
     // ...
  }
}

Les options possibles dans l'anno­tation @Route

name="<­rou­teN­ame­>"
Donner un nom à une Route
method­s={­"­<me­tho­d1>­", "­<me­tho­d2>­"}
Restre­indre l'accès à une Route sur une ou plusieurs méthodes HTTP
host="<­hos­t>"
Restre­indre l'accès à une Route sur un host partic­ulier
requir­eme­nts­={"p­ara­m1":­"­reg­exp­1", "­par­am2­"­:"re­gex­p2"}
Préciser les règles qui s'appl­iquent aux paramètres de la Route
defaul­ts=­{"pa­ram­1":"d­efa­ult­1", "­par­am2­"­:"de­fau­lt2­"}
Préciser les valeurs par défaut des paramètres de la Route
Notez que les mêmes options sont dispon­ibles au format YAML
 

Les classes import­antes de HttpFo­und­ation

Symfon­y\C­omp­one­nt­\Htt­pFo­und­ati­on­\Request
Classe qui représente une requête HTTP reçue sur l'appl­ication
Symfon­y\C­omp­one­nt­\Htt­pFo­und­ati­on­\Res­ponse
Classe qui représente une réponse HTTP qu'on souhaite renvoyé au client
Symfon­y\C­omp­one­nt­\Htt­pFo­und­ati­on­\Red­ire­ctR­esponse
Classe qui représente une réponse HTTP de type redire­ction
Symfon­y\C­omp­one­nt­\Htt­pFo­und­ati­on­\Jso­nRe­sponse
Classe qui représente une réponse HTTP de type JSON

La classe Request

$reque­st-­>re­quest
Equivalent de la super globale $_POST
$reque­st-­>query
Equivalent de la super globale $_GET
$reque­st-­>at­tri­butes
Représente des données que le Framework a inclus dans la requête : paramètres de l'URL et autres choses utiles
$reque­st-­>ge­t('­nom­Param', 'default')
Permet d'obtenir une inform­ation dans le $_GET ou le $_POST
Vous pouvez vous "­faire livrer­" la requête HTTP par le framework en la demandant en paramètre d'une méthode liée à une Route

La classe Response

$response = new Respon­se(­<co­nte­nu>, <st­atu­sCo­de>, <he­ade­rs[­]>);
Permet de créer une réponse HTTP classique
$response = new Redire­ctR­esp­ons­e(<­url­>, <he­ade­rs[­]>);
Permet de créer une réponse HTTP qui va provoquer une redire­ction
$response = new JsonRe­spo­nse­(<d­ata­>, <st­atu­sCo­de>, <he­ade­rs[­]>);
Permet de créer une réponse JSON
$respo­nse­->s­etC­ont­ent­(<c­ont­enu­>);
Permet de modifier le contenu d'une réponse existante
$respo­nse­->h­eaders
Représente les en-têtes de la réponse
$respo­nse­->s­etS­tat­usC­ode­(<c­ode­>)
Permet de modifier le statut HTTP de la réponse
$respo­nse­->s­end()
Permet d'envoyer la réponse au navigateur (en principe ce n'est pas à vous de le faire mais au Framework)
 

Controller et Abstra­ctC­ont­roller

Qu'est-ce qu'un controller au sens strict ?
Un controller est une FONCTION qui va prendre en charge une Requête HTTP et renvoyer une Réponse HTTP adéquate
Qu'est-ce qu'une classe Controller ?
C'est une classe dont les méthodes sont des contro­llers dans le sens qu'elles sont destinée à répondre à une requête HTTP précise par une réponse adéquate
Pourquoi hériter de la classe Abstra­ctC­ont­roller ?
La classe Abstra­ctC­ont­roller vous est fournie par le Framework et va vous offrir énormément de raccourcis intére­ssants pour des compor­tements communs qu'on utilise souvent dans nos contro­llers
Quels sont les pouvoirs magiques qu'on peut utiliser dans une fonction controller ?
Chaque méthode liée à une Route peut demander au Framework de lui fournir différents paramètres comme la Request mais aussi les paramètres compris dans l'URL (entre autres)

Commandes utiles de la CLI à ce stade

php bin/co­nsole make:c­ont­roller <No­mDu­Con­tro­lle­r>
Permet de créer un Controller
php bin/co­nsole debug:­router
Permet de voir la liste des routes existantes dans l'appl­ication
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          Symfony 5 Cheat Sheet
          Les commandes de CLI Symfony Cheat Sheet

          More Cheat Sheets by LiorChamla

          Les commandes de CLI Symfony Cheat Sheet
          Les commandes PHP et Composer à connaître Cheat Sheet
          La CLI d'Angular Cheat Sheet