Examen Symfony CII-2-GLSI
Examen Symfony CII-2-GLSI
Examen Symfony CII-2-GLSI
a) {% parent() %}
b) {{ parent() }}
c) {% parent(body) %}
d) {{ parent(body) }}
4. Sur une entité doctrine, en utilisant les annotations, quelle annotation permet de définir que la
propriété est une clé primaire
a) @ORM\Primary Key
b) @ORM\Id
c) @ORM\Column(type= ‘integer’, primary=true)
d) @ORM\Column(type= ‘integer’, primaryKey=true)
5. En Twig, pour appliquer un filtre sur un attribut attribut d’un objet $objet, quelle est la bonne
syntaxe ?
a) {{ objet->attribut | filtre }}
b) {% objet.attribut | filtre %}
c) {{ objet.attribut | filtre }}
d) {{ filtre(objet.attribut) }}
2
6. Quelle est la commande pour mettre à jour une base de données ?
a) php bin/console doctrine:schema:update
b) php bin/console doctrine:database:update
c) php bin/console doctrine:create:schema
d) php bin/console doctrine:database:create
/**
*@Route(“/Formation/{annee}/{slug}.{format}”, name=”formation”, requirements= {
*“annee” = “\d{2}”, “format”=”css|html”}, defaults={“format”=”html”} )
*/
Quelle URL sera bien interceptée parmi les URLs suivantes :
a) /Formation/20/Java.json
b) /Formation/2020/Java.css
c) /Formation/20/Java
d) /Formation/2/Java.html
9. Parmi les codes du contrôleur suivant, lequel supprime correctement une entité ?
a) c)
$em= $this->getDoctrine()->getManager(); $em= $this->getDoctrine()->getManager();
$salle = $em-> getRepository('NBundle:Salle')
-> find($id); $em->remove();
$em->flush();
$em->remove($salle);
$em->flush();
b) d)
$em= $this->getDoctrine()->getManager(); $salle = $em-> getRepository('NBundle:Salle')
$salle = $em-> getRepository('NBundle:Salle') -> find($id);
-> find($id);
$em->delete ($salle);
$em->remove ($salle); $em->flush();
10. Pour ajouter un attribut category qui va contenir un objet Category en relation ManyToOne.
Cet attribut est facultatif. Seules les opérations de suppression doivent être réalisées en cascade.
Quelle doit-être l’annotation ?
3
a) c)
<?php <?php
/** /**
*@ORM\ManyToOne(targetEntity= *@ORM\ManyToOne(targetEntity=
’’AppBundle\Entity\Category) ’’AppBundle\Entity\ Category,
*@ORM\JoinColumn(nullable=true) cascade=(“delete”))
*/ *@ORM\JoinColumn(nullable=true)
Private $category; */
Private $category;
b) d)
<?php <?php
/** /**
*@ORM\ManyToOne(targetEntity= *@ORM\ManyToOne(targetEntity=
’’AppBundle\Entity\ Category, nullable=false) ’’AppBundle\Entity\ Category,
*/ nullable=true)
Private $category; *@ORM\Cascade(“delete”)
*/
Private $category;
12. Dans un contrôleur, comment rediriger vers le site suivant http://www.mysite.com ? Donner
deux méthodes possibles.
Ecrire en DQL les requêtes suivantes (sachant que ces entités se trouvent sous le bundle
MagasinBundle)
Problème : (9 pts)
Notre objectif est d’implémenter une application web qui gère le service de réservation dans un hôtel.
Dans ce cadre, on propose de créer une application avec Symfony 3.4.
<?php <?php
namespace HotelBundle\Entity; namespace HotelBundle\Entity;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
…………………………………………………………….. ……………………………………………………………..
…………………………………………………………….. ……………………………………………………………..
…………………………………………………………….. ……………………………………………………………..
class Chambre class Reservation
{ {
/** /**
5
* @ORM\GeneratedValue * @ORM\GeneratedValue
* @ORM\.......................................... * @ORM\.........................................
* @ORM\.......................................... * @ ORM\.........................................
*/ */
private $id; private $id;
/** /**
* @ORM\......................................... * @ ORM\.........................................
*/ */
private $prix; private $dateArr;
/** /**
* @ORM\......................................... * @ORM\.........................................
*/ */
private $nbrLit; private $dateDep;
……………………………………………………………..
……………………………………………………………..
/** ……………………………………………………………..
* @ORM\.........................................
*/ //Getters-Setters
private $confort; }
……………………………………………………………..
……………………………………………………………..
//Getters-Setters
}
B.1. Terminer l’action listReservationAction() qui permet de retourner la page Twig suivante :
‘listReservation.html.twig’ (se trouve sous : HotelBundle/Resources/views/Reservation). Cette page
Twig permet de retourner la liste des réservations sauvegardées dans notre base de données.
<?php
namespace HotelBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
return $this->render('…………………………………………………………………………………',
array(
6
……………………..……………………………………………..
));
}
}
B.2. Compléter la page Twig suivante : ‘listReservation.html.twig’. Pour le client d’une réservation, on
veut afficher son nom et pour sa chambre, afficher son id.
Pour mettre à jour une Chambre, nous avons besoin de créer un formulaire pour introduire les données
d’une chambre. Soit ‘ChambreForm’, le formulaire de mise à jour d’une chambre.
Rediriger vers la liste des chambres Si la mise à jour d’une chambre est effectuée
correctement (sachant que le nom de la route de la liste des chambres est
listeChambreRoute).
Sinon, Afficher le formulaire ‘ChambreForm’ en utilisant la page Twig suivante :
‘updateChambre.html.twig’ (se trouve sous : HotelBundle/Resources/views/Chambre).
Sachant que le nbrLit d’une chambre doit prendre toujours la valeur 2.
<?php
namespace HotelBundle\Controller;
//use …
class ChambreController extends Controller
{
public function updateChambreAction(Request ……………………, …………..)
{
// EntityManager
………………………………………………………………………………………………………………………………...
if (………………………………………………………………….…………………………..)
{
//Update de la chambre
……………………………………………………………………………………………………………………………..
return $this->render('………………………………………………………………………………………….',
array(
……………………………………………………………………………
));
}
}
C.2. Pour la configuration des routes de notre application, nous utilisons le fichier ‘Routing.yml’.
Compléter la route responsable à la mise à jour d’une chambre.
agence_imm_update_chambre :
path: ……………………………………………………….
defaults: { _controller: ………………………………………………………………………………………….. }
………………………………………………………………………………
Afficher les CIN des clients (respectivement les id des chambres) pour la liste déroulante des clients
(respectivement des chambres).
<?php
namespace HotelBundle\Form;
E.1. Compléter l’action rechercheAction() qui permet de rechercher les réservations par date d’arrivée.
La page Twig de la recherche est recherche.html.twig et se trouve sous : HotelBundle/Resources/views.
<?php
namespace HotelBundle\Controller;
//use …
class ReservationController extends Controller
{
public function rechercheAction(Request ……………………)
{
// EntityManager
………………………………………………………………………………………………………………………………...
if(…………………………………………………………………………………………..) {
$dateSaisie=$request->get('input_recherche');
return $this->render('………………………………………………………………………………………….',
array(
……………………………………………………………………………
));
}
}
Annexe :
Pour afficher une liste déroulante de type Entity dans un formulaire, utiliser le code suivant :