Chapitre 2 CRUD Enseignants : Wassim M’sallem Matière : Web 2.0 Classe : 2ème Année Technologies Web 2.0
Plan du cours 1- Objectif 2-Diagramme de classe 3- Création des entités Technologies Web 2.0
1-Objectif L’objectif de ce chapitre est d’explorer l’ORM Doctrine de Symfony et la mise en place de la CRUD en mettant en place l’ étude de cas d’une école qui a plusieurs classe, et chaque étudiant doit appartenir à une classe Technologies Web 2.0
1-Diagramme de classe Etudiant NumEtudiant Nom Prenom Classe DateNaissance Sexe Classe# Classe NumClasse NomClasse 1 * Technologies Web 2.0
Symfony2/src/MyApp/EspritBundle 1-Création des entités Nous continuons de travaillez sur le même projet de la dernière séance 1- Créer un répertoire pour les entités Entity sous le répertoire Symfony2/src/MyApp/EspritBundle 2- Créer nos deux classes entité sous le répertoire Entity : Classe.php et Etudiant.php Technologies Web 2.0
1-Création des entités <?php namespace MyApp\FilmothequeBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; /** * @ORM\Entity */ class Classe { * @ORM\GeneratedValue * @ORM\Id * @ORM\Column(type="integer") private $id; * @ORM\Column(type="string",length="255") * @Assert\NotBlank() * @Assert\MinLength(5) private $NomClasse ; } Technologies Web 2.0
1-Création des entités <?php namespace MyApp\FilmothequeBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; class Etudiant { /** * @ORM\GeneratedValue * @ORM\Id * @ORM\Column(type="integer") */ private $idEtudiant; * @ORMM\Column(type="string",length="255") * @Assert\NotBlank() * @Assert\MinLength(5) private $Nom ; /** * @ORMM\Column(type="string",length="255") * @Assert\NotBlank() * @Assert\MinLength(5) */ private $Prenom ; * @ORM\Column(type="date") private $DateNaissance ; * @ORM\Column(type="string",length="1") * @Assert\Choice(choices = {"M", "F"}) private $Sexe; * @ORM\ManyToOne(targetEntity="Classe") private $Classe; } Technologies Web 2.0
1-Création des entités 3- Création des Getters et des Setters des deux classes. 4- Création de la configuration de la base de données se fait dans l’emplacement suivant : Symfony2/app/config/parameters.ini [parameters] database_driver = pdo_mysql database_host = localhost database_port = database_name = Ecole database_user = root database_password = mailer_transport = smtp mailer_host = localhost mailer_user = mailer_password = locale = fr secret = ThisTokenIsNotSoSecretChangeIt Technologies Web 2.0
1-Création des entités php app/console doctrine:database:create 5 -Création de la base de données se fait en tappant la commande suivante : php app/console doctrine:database:create 6- Création des tables se fait en tapant la commande suivante : php app/console doctrine:schema:create Pour une probable modification on peut utiliser la commande php app/console doctrine:schema:update Technologies Web 2.0
2-Affichage de la liste des classes 7- Nous allons maintenant afficher la liste des classes, pour ceci nous allons créer un nouveau Controller ClasseController namespace MyApp\EspritBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class ClasseController extends Controller { public function listeAction() $em = $this->container->get('doctrine')->getEntityManager(); $classes = $em->getRepository('MyAppEspritBundle:Classe')->findAll(); return $this->container->get('templating')- >renderResponse('MyAppEspritBundle:Classe:liste.html.twig',array( 'classes' => $classes)); } Technologies Web 2.0
2-Affichage de la liste des classes 8- Création de la vue : Pour commencer il faut créer un répertoire Etudiant sous le répertoire view, et créer le fichier de la vue liste.html.twig <h1> Liste des classe </h1> <table border=1> <tr> <td> Identifiant classe </td> <td> Nom de la classe </td> </tr> {% for classe in classes %} <td>{{ classe.id }}</td> <td>{{ classe.nom }}</td> {% else %} <p>Aucune catégorie n'a été trouvée.</p> {% endfor %} </table>} Technologies Web 2.0
2-Affichage de la liste des classes 8- Création de la vue : Pour commencer il faut créer un répertoire Etudiant sous le répertoire view, et créer le fichier de la vue liste.html.twig <h1> Liste des classe </h1> <table border=1> <tr> <td> Identifiant classe </td> <td> Nom de la classe </td> </tr> {% for classe in classes %} <td>{{ classe.id }}</td> <td>{{ classe.nom }}</td> {% else %} <p>Aucune catégorie n'a été trouvée.</p> {% endfor %} </table>} Technologies Web 2.0
2-Affichage de la liste des classes 8- Création de l’URL: Ajouter dans le répertoire de routing: Symfony2/src/MyApp/EspritBundle <h1> Liste des classe </h1> <table border=1> <tr> <td> Identifiant classe </td> <td> Nom de la classe </td> </tr> {% for classe in classes %} <td>{{ classe.id }}</td> <td>{{ classe.nom }}</td> {% else %} <p>Aucune catégorie n'a été trouvée.</p> {% endfor %} </table>} Technologies Web 2.0