Cours Symfony
Cours Symfony
Cours Symfony
(Une introduction)
É Intérêts :
• structuration du code (MVC)
• simplification du développement
• nombreux modules existants (bibliothèque)
É Points saillants :
• routage facile et url propres (via annotations)
• contrôleurs : PHP et objet
• manipulation des bases de données : Doctrine
• langage de templates : Twig
• gestion de formulaires facilitée
• etc.
Plan
1. Démarrage et organisation
2. Templates
3. Contrôleurs
4. Base de données
5. Formulaires
Plan
1. Démarrage et organisation
2. Templates
3. Contrôleurs
4. Base de données
5. Formulaires
Installation
É Nouveau projet :
symfony new mon_projet lts
→ télécharge le code nécessaire dans le répertoire
mon_projet
É Serveur de développement :
php bin / console server : start
→ écoute sur http://localhost:8000
Modèle-vue-contrôleur
É Vues en Twig :
• une vue par « type de page »
• langage de templates simple et puissant
• décrit la présentation de la page en fonction de plusieurs
paramètres passés par le contrôleur
• separation logique de « calcul » de la page / affichage
É mais très flexible : langage riche, possibilité d’inclure de la
logique dans la presentation (p. ex. embedded controllers)
• héritage
MVC en pratique (suite)
É Modèle :
un ensemble de services (p. ex. gestion de la base de données,
des formulaires, de la sécurité (authentification), des messages
et mails, etc.)
• la plupart des services courants fournis par Symfony
• service de gestion de la bd (mysql) : Doctrine
É correspondance : données dans la bd ⇔ objets PHP
• possibilité de créer ses propres services (accessibles par tous les
contrôleurs)
Organisation des fichiers
É Autres répertoires :
• web : contient les fichiers publiquement accessibles (images,
CSS, etc.)
• bin : contient les exécutables (notamment console)
• var : cache, logs, etc.
• tests : pour les tests automatiques
• vendor : les modules additionnels
Plan
1. Démarrage et organisation
2. Templates
3. Contrôleurs
4. Base de données
5. Formulaires
base.html.twig
{% block stylesheets %}
{{ parent () }}
<link href="{{ asset('css/exemple.css ') }}" rel="stylesheet" />
{% endblock %}
{% block body %}
<h1 >Bienvenue </h1 >
{% endblock %}
Exemple
Template appelé avec l’objet articles en argument :
{% extends 'base.html.twig ' %} (héritage)
{% block title %} Exemple {% endblock %} (bloc écrasé)
{% block stylesheets %}
{{ parent () }} (inclure le contenu du bloc parent)
<link href="{{ asset('css/exemple.css ') }}" rel="stylesheet" />
{% endblock %}
{% block body %}
<h1 >Bienvenue </h1 > (passé en paramètre)
1. Démarrage et organisation
2. Templates
3. Contrôleurs
4. Base de données
5. Formulaires
Base
Routage et code simples (DefaultController) :
<?php
namespace AppBundle\Controller;
namespace AppBundle\Controller;
1. Démarrage et organisation
2. Templates
3. Contrôleurs
4. Base de données
5. Formulaires
Doctrine
1. Démarrage et organisation
2. Templates
3. Contrôleurs
4. Base de données
5. Formulaires
Formulaires
É À partir d’un objet contenant des champs (p. ex. venant d’une
base de données), création simplifiée de formulaires contenant
ces champs
É Types de champs devinés automatiquement
É Facilitation du traitement
Exemple
$form ->handleRequest($request );
if ($form ->isSubmitted () && $form ->isValid ()) {
$em = $this ->getDoctrine ()-> getManager ();
$em ->persist($task );
$em ->flush ();
return $this ->redirectToRoute('task_success ');
}
{{ form_start ( form ) }}
{{ form_widget ( form ) }}
{{ form_end ( form ) }}
https://symfony.com/doc/3.4/index.html
É guides et tutoriels
É référence Symfony