Vous êtes sur la page 1sur 2

ProgWeb

L3 Informatique

TD n 5

Symfony

2015–2016

Ce TP se veut une introduction `a Symfony, un framework cˆot´e serveur permettant de simplifier et d’am´eliorer le d´eveloppement d’une application web. Vous allez ˆetre guid´es pas `a pas pour d´eployer une mini-application d´ej`a cod´ee, qu’il faudra ensuite compl´eter et am´eliorer. Le but final est de cr´eer un site de sondages (`a la Doodle). Dans un premier temps, les sondages seront extrˆemement simplifi´es : une question et trois r´eponses possibles (Oui/Non/Ne sait pas ). Les sondages auront tous une url al´eatoire. Certains seront « publics » (c’est-`a-dire que leur adresse sera accessible par un lien sur le site), d’autres priv´es.

1. Nouveau projet La commande symfony (install´ee sur Lucien) est simplement un « installateur » pour d´eployer de nouveaux projets utilisant le framework Symfony. Elle t´el´echarge les briques de base (dont le code php du serveur de d´eveloppement) pour d´emarrer un projet. Dans le r´epertoire de votre choix, tapez :

symfony new mon_projet

o`u mon_projet est un nom arbitraire pour votre projet. Un sous-r´epertoire mon_projet est cr´e´e, `a l’int´erieur duquel se trouvent les fichiers de base du projet.

2. Test de l’installation Dans le r´epertoire de votre projet, tapez :

php bin/console server:start

(il faudra penser `a ´eteindre 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 `a l’adresse http://localhost:8000 : vous devriez voir une page d’accueil Symfony.

3. Configuration de la base de donn´ees

´

Editer le fichier app/config/parameters.yml pour pouvoir acc´eder `a la base de don-

n´ees :

parameters:

database_host:

lucien

database_port:

null

database_name:

votre_login

database_user:

votre_login

database_password:

votre_mdp

4. Cr´eation de la table Pour votre application de sondages, vous allez cr´eer un table Poll avec l’outil Doctrine. Tapez :

php bin/console doctrine:generate:entity

et r´epondez aux questions pour cr´eer une table nomm´ee AppBundle:Poll (choisissez « Configuration format : annotation ») avec les attributs suivants :

(question

string(255),

date

datetime,

public

oui

boolean,

integer,

url

non

string(255)

integer,

nsp

integer,

unique)

et une cl´e primaire id cr´e´ee automatiquement. Dans l’ordre, on a l’intitul´e de la question, le nombre de votants ayant vot´e oui (resp. non et « ne sait pas »), la date du sondage, s’il est public, et son url (al´eatoire). Une fois cette commande termin´ee, cr´eez r´eellement la table dans la base de donn´ees via la commande :

php bin/console doctrine:schema:update --force

1

ProgWeb

L3 Informatique

TD n 5

Symfony

2015–2016

V´erifiez avec mysql que la table a bien ´et´e cr´e´ee. Cette proc´edure a aussi cr´e´e deux fichiers

src/AppBundle/Entity/Poll.php

src/AppBundle/Repository/PollRepository.php

le premier pour d´efinir la classe Poll (« interface » Doctrine pour communiquer facile-

ment avec la base) ; le second o`u vous pourriez ´ecrire les requˆetes 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´ec´edents ce qui permet de construire cette nouvelle page.

6. G´erer les sondages

Copiez les templates *.twig dans app/Resources/views/.

´

Etudiez le fichier (contrˆoleur) PollsController.php pour comprendre son fonctionne-

ment. Copiez-le dans src/AppBundle/Controller/. D´ecommentez 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´ees quand vous cr´eez 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ˆoleurs.

7. Templates Dans le Symfony book , lisez le chapitre concernant les templates et am´eliorez l’organisa- tion des fichiers (utilisez l’h´eritage, notamment). Modifiez les fichiers twig afin de rendre le site plus esth´etique. Vous pouvez utiliser Bootstrap si vous le souhaitez.

8. Contrˆoleurs Sur la page d’accueil, affichez les cinq sondages publics les plus r´ecents. Mettre un lien pour obtenir la liste compl`ete. Essayez de faire cela avec le moins de code possible :

dans la page d’accueil, on pourra r´eutiliser le contrˆoleur permettant d’obtenir la liste des

sondages publics, via la commande render(controller(’AppBundle:

//symfony.com/doc/current/book/templating.html#embedding-controllers). Pour les requˆetes `a la base de donn´ees, lisez le chapitre sur Doctrine et explorez le fichier

src/AppBundle/Entity/Poll.php

(cr´e´e automatiquement par Doctrine) pour comprendre la classe des objets Poll syn- chronis´es avec la base de donn´ees.

(voir http:

`

9. A vous de jouer

En repartant de z´ero, cr´eer un autre site de sondage `a la Doodle : maintenant, les votants ne sont plus anonymes mais ont un pseudo, et le cr´eateur du sondage peut choisir l’ensemble des r´eponses possibles (un ensemble de dates, par exemple).

A priori, la structure de la base de donn´ees 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´eer, avec Doctrine, les liens entre les tables (relations). Pour les formulaires, on pourra lire le chapitre correspondant du Symfony book .

2