Services
Un service est un objet auquel on délègue une partie du traitement. Cela permet de l'appeler plus facilement à différents endroits.
Log
Symfony offre un service de log pour intéragir avec le journal de l'application.
// src/Controller/DiabloController.php use Psr\Log\LoggerInterface; /** * @Route("/info") */ public function info(LoggerInterface $logger) { $logger->info('Someone asked for informations, we should provide some ...'); // ... }
Session
Les sessions sont gérées par Symfony et utilisable à travers un service
<?php /** * @Route("/session", name="lpars_cours_controleur_session") */ public function session() { // Récupération du service $session = $this->get('session'); // On récupère une entrée $session->get('best_group'); // On peut aussi écrire $session->set('best_group', 'Les frères Jacquard'); ?>
Les éléments de la session sont visibles à travers le profiler.
Symfony va plus loin dans la gestion des sessions en proposant un espace de stockage avec une durée de vie d'une seule page. Ceci est notamment utile dans le cadre de validation de formulaire.
public function ajouterAction($id) { $this->get('session')->getFlashBag()->add('info', 'Enregistrement réussi'); // ... }
Au niveau de la vue, il suffit d'exploiter ces informations
<p class="information"> {% for message in app.session.flashbag.get('info') %} {{ message }}<br> {% endfor %} </p>