Support de Révision Symfony
Support de Révision Symfony
Support de Révision Symfony
UP WEB
ESPRIT
27/11/2013
- Introduction : Dans ce support, nous proposons une révision de la formation Symfony2 avec
l’environnement de travail suivant : Netbeans pour PHP + Wamp.
- Problématique : Gestion de plus en plus délicate des gros projets en entreprise en particulier
au niveau de la collaboration, la gestion du contenu, la maintenabilité et l’extensibilité.
Solutions : les framework et CMS
3- Renseigner la variable d’environnement php dans le path comme le montre les étapes
suivantes :
2
Ensuite aller à ordinateur => bouton droit propriété
3
Création du projet sur netbeans :
1- Aller sur tools => Options
4
Renseigner PHP5 Interpreter
Pointer sur le fichier .zip de symfony (la version finalement complète est 2.3.7)
5
Donner le nom du projet et préciser plutôt la version PHP 5.3 pour la compatibilité !
6
7
Attendre quelques secondes et c’est fait !!
8
Après la création de votre projet ! La première chose à faire c’est de vérifier la configuration PHP.
http://localhost/Nom_Projet/web/config.php
Vender : toutes les bibliothèques externes de notre répertoire swift, doctrine, twig (c’est quoi une
bibliothèque ? boite noir qu’on sait utiliser mais pas forcement ce qu’il y a dedans ! exp : swiftMail :
permet l’envoie des emails)
Web : tt ce qui est fichier destinés pr les visiteurs css JS … là où on trouve notre controleur frontal,
le point d’entré de notre appli
Contrôleur frontale
Le contrôleur frontal (front controller, en anglais) est le point d'entrée de votre application. C'est le
fichier par lequel passent toutes vos pages. Vous devez surement connaître le principe d'index.php et
des pseudo-frames (avec des URL du type index.php?page=blog) ; eh bien, cet index.php est un
9
contrôleur frontal. Dans Symfony2, le contrôleur frontal se situe dans le répertoire /web, il s'agit de
app.php ou app_dev.php.
Pourquoi y a-t-il deux contrôleurs frontaux ? Normalement, c'est un fichier unique qui gère toutes les
pages, non ?
travaillons maintenant avec Symfony2, et son objectif est de nous faciliter le développement.
C'est pourquoi Symfony2 propose un contrôleur frontal pour nos visiteurs, app.php, et un
contrôleur frontal lorsque nous développons, app_dev.php. Ces deux contrôleurs frontaux,
fournis par Symfony2 et prêts à l'emploi, définissent en fait deux environnements de travail.
À chacun ses besoins, et Symfony2 compte bien tous les remplir. C'est pourquoi il offre
plusieurs environnements de travail :
- L'environnement de développement, appelé « dev », accessible en utilisant le contrôleur
frontal app_dev.php. C'est l'environnement que l'on utilisera toujours pour développer.
- L'environnement de production, appelé « prod », accessible en utilisant le contrôleur frontal
app.php.
10
11
Then ok ok ^^ and finally click on the button Run :D
http://localhost/testSymfony/web/config.php
12
Création d’un Bundle :
13
Préciser le namespace, ensuite le nom du bundle ensuite yes, yml, yes, yes et c’est fait
14
Ce qui se passe lors de la création d’un bundle
1] Création de son code source, situé dans src/Application/Bundle, et dont le seul fichier
obligatoire est la classe à la racine
NomApplicationNomBundle.php (il y a rien de spécial dedans, mais n’y touchez pas ! )
Cette classe permet donc uniquement de définir quels bundles charger pour
l'application.
15
3] Création du routeur :
4] Pour chaque Action, il faut qu’on lui crée son URL (sa route) dans le fichier
routing.yml situé dans le répertoire de notre bundle sous Ressources/config !
16
Je propose ce schéma pour mieux expliquer tout cela !
Au niveau du contrôleur :
17
Au niveau de la route :
Maintenant, il faut aller au fichier routing.yml, pour voir comment indiquer l’URL de
chaque Action (voir figure d’après) : ce qu’on renseigne dans « pattern : » c’est ce
qu’on va mettre dans notre URL :
18
Au niveau du fichier .html.twig
Par rapport au code : on remarque que le moteur de template twig renseigne ses variables
entre {{ variable }}
19
Expliquer que la variable name est la variable rendu par notre controleur.
Au niveau du contrôleur :
<!DOCTYPE html>
<html>
<head>
<title>Bienvenue </title>
</head>
<body>
<center><h1> {{ Msg }} </h1><center>
<table border="1">
{% for Enseignant in Enseignants %}
<tr>
<td>{{ Enseignant }}</td>
</tr>
{% endfor %}
</table>
< /body>
</head>
On remarque que twig insert son propre code entre des {% code ici %}
Pour conclure et à titre de révision pratique, vous pouvez reprendre la création d’un
bundle sur l’invite de commande.
Et pour une révision théorique reprendre la présentation power point en pièces jointes.
20
Maintenant, on propose la création d’un tout nouveau projet qu’on appelle Tp et :
21
Création du projet Tp :
Après la création du projet, la première chose à faire c’est de renseigner le point d’entrée pour notre
application qui est le contrôleur frontal app_dev.php sous le répertoire web comme suit :
22
Génération du bundle
23
Bundle namespace: MyApp\EspritBundle
In your code, a bundle is often referenced by its name. It can be the concatenation of all namespace parts but
it's really up to you to come up with a unique name (a good practice is to start with the vendor name). Based
on the namespace, we suggest MyAppEspritBundle.
The bundle can be generated anywhere. The suggested default directory uses the standard conventions.
To help you get started faster, the command can generate some code snippets for you.
Bundle generation
Done.
24
Configuration de la connexion avec la BDD :
--------------------------------------------------------------------------------------------------------------------------------------
parameters:
database_driver: pdo_mysql
database_host: Localhost
database_port: null
database_name: tp
database_user: root
database_password: null
mailer_transport: smtp
mailer_host: Localhost
mailer_user: null
mailer_password: null
locale: fr
secret: ThisTokenIsNotSoSecretChangeIt
25
Génération de l’entité Classe :
26
27
Génération de la BDD tp :
28
Génération d’un formulaire pour l’entité Classe :
29
Résultat de la génération de l’entité et de du formulaire dans le répertoire src
30
à copier ce dernier petit Bou de code en jaune dans le fichier routing.yml sous notre bundle.
A la fin, nous aurons l’arborescence suivante :
31
Testons le résultat :
32
En cliquant sur le bouton Create, cela va nous amener à la page show
33
Soit Editer pour pouvoir modifier les donner dans la BDD :
Maintenant, il ne reste qu’à aller expliquer le code des CRUD qui ressemble énormément à celui de
zend !
34
Intégration d’un Template :
Il faut commencer bien sur par déziper le .zip du template :pp
Copier les fichiers CSS, les images et les fichiers JS s’il en existe comme le montre la figure
en dessous (1). Ensuite, copier le fichier layout.html.twig sous views (2) à partir de
l’application démo acme (vous le trouverez sous views aussi).
Copier la ligne 19 contenant un lien css sur internet (sur d’autres templates, on pourrait en
trouver plusieurs donc il faudrait tout copier)
35
Maintenant, il faut aller au fichier layout.html.twig et :
- Supprimer la première ligne car il n’y en a plus besoin puisque sur ce tuto on n’hérite
pas du fichier base.html.twig étant donné que l’application démo acme hérite déjà de
ce fichier et ceci génère un conflit.
1- Coller la ligne 19 du fichier index.html (voir ligne 2 dans la figure ci-dessous)
2- Préciser le namespace (nom App + Bundle) et le nom du fichier css du template
(voir ligne 4 dans la figure ci-dessous)
Maintenant retour au fichier index.html et copier tout le contenu du body (balise body non
incluse).
Coller tout cela dans layout.html.twig en écrasant tout le code en dessous du block head
entre les lignes 0 et 5, comme le montre la figure ci-dessous.
36
Maintenant, sur le fichier layout.html.twig, on va renseigner qu’on va remplacer le contenu
de la division content du template par notre propre contenu, voir figure ci-dessous :
Maintenant, on va aller à la page que nous voulons intégrer avec ce template (exemple la page
edit.html.twig ) et on va indiquer que nous allons hériter du fichier layout.html.twig (voir
ligne 1 sur la figure ci-dessous).
Par la suite, il faut indiquer qu’il s’agit du « content » comme le montre la figure ci-dessous
entre les lignes 2 et 17.
37
A ce stade, il ne nous reste qu’à lancer la commande assets pour que tout cela prenne effet !
voir figures ci-dessous :
38
39