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

          Les commandes de CLI Symfony Cheat Sheet
          Symfony Global 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