Objectifs
- Comprendre l'utilisation des variables dans Symfony
- Savoir manipuler les variables
Présentation
- Pour afficher des données dans une vue Symfony, on utilise la syntaxe Twig. Il est possible de passer un nombre, une chaîne de caractères ou même le résultat d’une fonction.
- Différentes données affichées
<p>{{ une_variable }}<p> <p>{{ 'une chaine' }}</p> <p>{{ 'maintenant'|date('U') }} secondes depuis le 01/01/1970</p> - En coulisse, Twig assure la sécurité de l'affichage en échappant les données par défaut pour prévenir les attaques XSS.
- Équivalent PHP de la syntaxe {{ var }}
- Sous Symfony, le code Twig :
{{ var }}- Est équivalent à ce code PHP :
<?php echo htmlentities( $var, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8' ); ?>
Transmettre des données à afficher dans Symfony
- Symfony propose différentes manières de transmettre des données à une vue. Nous pouvons transmettre des données directement à partir des contrôleurs.
- Voici quelques-unes des façons dont nous pouvons transmettre des données à la vue : Utilisation du système de rendu Passage de variables dans le rendu Utilisation du contrôleur
Utilisation du système de rendu
- Généralement, il est préférable d’éviter de réaliser les traitements directement dans les vues, particulièrement dans le contexte du patron de conception modèle-vue-contrôleur qui est celui utilisé par Symfony.
- Ainsi, les traitements des données auront lieu dans les contrôleurs. Pour adresser une ou plusieurs variables à une vue, il faut transmettre ces variables lors du rendu de la vue.
- Les variables transmises depuis le contrôleur sont accessibles dans la vue et peuvent être affichées à l'aide de la syntaxe Twig.
- Exemples
Dans le contrôleur
// src/Controller/WelcomeController.php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class WelcomeController extends AbstractController { public function welcome(): Response { $name = 'Laure'; $date = date('d/m/Y'); $meteo = $this->getMeteo(); // Méthode pour obtenir la météo return $this->render('welcome/index.html.twig', [ 'name' => $name, 'date' => $date, 'meteo' => $meteo, ]); } private function getMeteo(): string { // Méthode pour obtenir la météo return 'ensoleillé'; } }Dans la vue
{# templates/welcome/index.html.twig #}
<h1>Bienvenue {{ name }}</h1>
<p>
Nous sommes le {{ date }} et il fait {{ meteo }}
</p>