Sie sind auf Seite 1von 2

ProgWeb L3 Informatique

TD n◦ 5 Symfony 2015–2016

Ce TP se veut une introduction à Symfony, un framework côté serveur permettant de


simplifier et d’améliorer le développement d’une application web.
Vous allez être guidés pas à pas pour déployer une mini-application déjà codée, qu’il
faudra ensuite compléter et améliorer. Le but final est de créer un site de sondages (à la
Doodle). Dans un premier temps, les sondages seront extrêmement simplifiés : une question
et trois réponses possibles (Oui/Non/Ne sait pas). Les sondages auront tous une url aléatoire.
Certains seront « publics » (c’est-à-dire que leur adresse sera accessible par un lien sur le site),
d’autres privés.
1. Nouveau projet
La commande symfony (installée sur Lucien) est simplement un « installateur » pour
déployer de nouveaux projets utilisant le framework Symfony. Elle télécharge les briques
de base (dont le code php du serveur de développement) pour démarrer un projet.
Dans le répertoire de votre choix, tapez :
symfony new mon_projet
où mon_projet est un nom arbitraire pour votre projet. Un sous-répertoire mon_projet
est créé, à l’intérieur duquel se trouvent les fichiers de base du projet.
2. Test de l’installation
Dans le répertoire de votre projet, tapez :
php bin/console server:start
(il faudra penser à éteindre le serveur avec php bin/console server:stop quand vous
aurez fini). (Si server:start ne fonctionne pas, utilisez server:run.) Puis, dans votre
navigateur web, allez à l’adresse http://localhost:8000 : vous devriez voir une page
d’accueil Symfony.
3. Configuration de la base de données
Éditer le fichier app/config/parameters.yml pour pouvoir accéder à la base de don-
nées :
parameters:
database_host: lucien
database_port: null
database_name: votre_login
database_user: votre_login
database_password: votre_mdp
...
4. Création de la table
Pour votre application de sondages, vous allez créer un table Poll avec l’outil Doctrine.
Tapez :
php bin/console doctrine:generate:entity
et répondez aux questions pour créer une table nommée AppBundle:Poll (choisissez
« Configuration format : annotation ») avec les attributs suivants :
(question string(255), oui integer, non integer, nsp integer,
date datetime, public boolean, url string(255) unique)
et une clé primaire id créée automatiquement. Dans l’ordre, on a l’intitulé de la question,
le nombre de votants ayant voté oui (resp. non et « ne sait pas »), la date du sondage,
s’il est public, et son url (aléatoire).
Une fois cette commande terminée, créez réellement la table dans la base de données via
la commande :
php bin/console doctrine:schema:update --force

1
ProgWeb L3 Informatique
TD n◦ 5 Symfony 2015–2016

Vérifiez avec mysql que la table a bien été créée.


Cette procédure a aussi créé deux fichiers
src/AppBundle/Entity/Poll.php
src/AppBundle/Repository/PollRepository.php
le premier pour définir la classe Poll (« interface » Doctrine pour communiquer facile-
ment avec la base) ; le second où vous pourriez écrire les requêtes qui reviennent souvent.
5. Page d’accueil
Remplacer le fichier src/AppBundle/Controller/DefaultController.php par celui fourni
sur Didel, et copier home.html.twig dans app/Resources/views/. Recharger la page
d’accueil du site. Comprenez dans les deux fichiers précédents ce qui permet de construire
cette nouvelle page.
6. Gérer les sondages
Copiez les templates *.twig dans app/Resources/views/.
Étudiez le fichier (contrôleur) PollsController.php pour comprendre son fonctionne-
ment. Copiez-le dans src/AppBundle/Controller/.
Décommentez la ligne
<h3><a href="{{ path (’createPoll’) }}">Create your own poll!</a></h3>
du fichier home.html.twig. Testez le nouveau site. Regardez ce qui se passe dans la base
de données quand vous créez un sondage ou quand vous votez. Changez ou commentez
des bouts de code pour voir l’influence de vos modifications.
Dans le Symfony book (http://symfony.com/doc/current/book/), lisez le chapitre
concernant le routage et les contrôleurs.
7. Templates
Dans le Symfony book , lisez le chapitre concernant les templates et améliorez l’organisa-
tion des fichiers (utilisez l’héritage, notamment).
Modifiez les fichiers twig afin de rendre le site plus esthétique. Vous pouvez utiliser
Bootstrap si vous le souhaitez.
8. Contrôleurs
Sur la page d’accueil, affichez les cinq sondages publics les plus récents. Mettre un lien
pour obtenir la liste complète. Essayez de faire cela avec le moins de code possible :
dans la page d’accueil, on pourra réutiliser le contrôleur permettant d’obtenir la liste des
sondages publics, via la commande render(controller(’AppBundle:... (voir http:
//symfony.com/doc/current/book/templating.html#embedding-controllers).
Pour les requêtes à la base de données, lisez le chapitre sur Doctrine et explorez le fichier
src/AppBundle/Entity/Poll.php
(créé automatiquement par Doctrine) pour comprendre la classe des objets Poll syn-
chronisés avec la base de données.
9. À vous de jouer
En repartant de zéro, créer un autre site de sondage à la Doodle : maintenant, les
votants ne sont plus anonymes mais ont un pseudo, et le créateur du sondage peut
choisir l’ensemble des réponses possibles (un ensemble de dates, par exemple).
A priori, la structure de la base de données sera plus complexe qu’auparavant : on aura
besoin de plusieurs tables cette fois-ci. On pourra lire http://docs.doctrine-project.
org/projects/doctrine-orm/en/latest/reference/association-mapping.html pour
comprendre comment créer, avec Doctrine, les liens entre les tables (relations).
Pour les formulaires, on pourra lire le chapitre correspondant du Symfony book .

Das könnte Ihnen auch gefallen