Utiliser des variables sous Symfony
Utiliser des variables sous Symfony
-
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
- 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 :
<p>{{ une_variable }}<p>
<p>{{ 'une chaine' }}</p>
<p>{{ 'maintenant'|date('U') }} secondes depuis le 01/01/1970</p>
<?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
- 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
-
Dans la vue
Utilisation du système de rendu
Passage de variables dans le rendu
Utilisation du 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é';
}
}
{# templates/welcome/index.html.twig #}
<h1>Bienvenue {{ name }}</h1>
<p>
Nous sommes le {{ date }} et il fait {{ meteo }}
</p>