Premiers pas avec Symfony 4

Le but de ce chapitre est de créer une nouvelle page affichant juste un message de bienvenue. Il faut donc :

  • prévoir l'url qui permettra d'afficher cette page
  • associer cette url à un contrôleur et une méthode de ce contrôleur
  • implémenter le contrôleur et sa méthode
  • créer la vue contenant les informations à afficher.

Le fichier des routes :

Le fichier …/config/routes.yaml permet d'associer une url à un contrôleur et sa méthode. Ici l'url saisie sera : http://localhost/webstudent/public/accueil.

Chaque route est définie par un ensemble de 3 lignes :

  • le nom de la route (ici route_accueil). Vous pouvez mettre ce que vous voulez mais ce nom doit être unique pour tout votre fichier.
  • le path = la partie de l'url à saisir dans le navigateur derrière http://localhost/webstudent/public (ici /accueil)
  • le contrôleur et la méthode associée à la route (ici EtudiantController, méthode index).

Fichier …/config/routes.yaml

route_accueil:
    path: /accueil
    controller: App\Controller\EtudiantController::index

Création du contrôleur

Le contrôleur contient la logique applicative. Il utilise la couche modèle pour exploiter les données, effectue éventuellement des traitements et redirige vers une vue. Les contrôleurs sont situés dans le dossier …\src\Controller et ont pour nom xxxController.

pré-requis : installer les dépendances permettant de créer le contrôleur via la ligne de commande. Il faut installer deux packages :

> composer require symfony/maker-bundle --dev
> composer require doctrine/annotations

Le fichier peut aussi être créé manuellement. Il doit respecter les règles des contrôleurs Symfony. Il suffit de prendre exemple sur le contrôleur créé par défaut DefaultController.

>php bin/console make:controller

Donner le nom EtudiantController. Vérifier la présence du nouveau fichier dans src/Controller, l'éditer et le modifier comme ci-dessous.

Fichier …/src/Controller/EtudiantController.php

<?php
 
namespace App\Controller;
 
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
 
class EtudiantController extends AbstractController
{
    /*
     * @Route("/etudiant", name="etudiant")
     */
    public function index()
    {
     	/* Cette simple instruction permet d'envoyer des informations au navigateur sans passer par une vue.
        return new Response('<html><body>Salut Les SIO</body></html>');
        */
 
         // initialise une variable qui sera exploitée dans la vue
         $annee = '2020';
         return $this->render('etudiant/vue_accueil.html.twig', ['pAnnee' => $annee,
        ]);				         
    }
}

La méthode index de ce contrôleur appelée par la route précédente, initialise une variable $annee et renvoie vers une vue nommée vue_accueil.html.twig en passant en paramètre la variable $annee.

Création de la vue

Les vues avec symfony sont générées avec le moteur de templates Twig. Il s'agit de simples pages contenant essentiellement du Html et dans lesquelles des morceaux de code php peuvent être exécutés. Les vues doivent avoir l'extension .html.twig et se situer dans le dossier ../templates. du projet. Voici la vue renvoyée par le contrôleur ci-dessus et permettant d'afficher un simple message. Ce fichier nommé accueil.html.twig est créé dans le dossier ../templates/etudiant.

Il nous faut d'abord installer le composant permettant de générer les pages twig, ainsi qu'un composant utilisé ultérieurement (asset):

>composer require symfony/twig-bundle
>composer require symfony/asset

Fichier templates/etudiant/accueil.html.twig

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}Welcome!{% endblock %}</title>
        {% block stylesheets %}{% endblock %}
    </head>
    <body>
        {% block body %}{% endblock %}
        {% block javascripts %}{% endblock %}
 
		Hello les SIO</br>
		Quelles notes obtiendrez vous au BTS en {{pAnnee}} ?
    </body>
</html>

Tests

UPDATES

We've started shipping!

Posted 2 days ago

Suspendisse luctus at massa sit amet bibendum. Cras commodo congue urna, vel dictum velit bibendum eget. Vestibulum quis risus euismod, facilisis lorem nec, dapibus leo. Quisque sodales eget dolor iaculis dapibus. Vivamus sit amet lacus ipsum. Nullam varius lobortis neque, et efficitur lacus. Quisque dictum tellus nec mi luctus imperdiet. Morbi vel aliquet velit, accumsan dapibus urna. Cras ligula orci, suscipit id eros non, rhoncus efficitur nisi.

Launch begins manufacturing

Posted 9 days ago

Suspendisse luctus at massa sit amet bibendum. Cras commodo congue urna, vel dictum velit bibendum eget. Vestibulum quis risus euismod, facilisis lorem nec, dapibus leo. Quisque sodales eget dolor iaculis dapibus. Vivamus sit amet lacus ipsum. Nullam varius lobortis neque, et efficitur lacus. Quisque dictum tellus nec mi luctus imperdiet. Morbi vel aliquet velit, accumsan dapibus urna. Cras ligula orci, suscipit id eros non, rhoncus efficitur nisi.

Designs have now been finalized

Posted 17 days ago

Suspendisse luctus at massa sit amet bibendum. Cras commodo congue urna, vel dictum velit bibendum eget. Vestibulum quis risus euismod, facilisis lorem nec, dapibus leo. Quisque sodales eget dolor iaculis dapibus. Vivamus sit amet lacus ipsum. Nullam varius lobortis neque, et efficitur lacus. Quisque dictum tellus nec mi luctus imperdiet. Morbi vel aliquet velit, accumsan dapibus urna. Cras ligula orci, suscipit id eros non, rhoncus efficitur nisi.