php-rt:tp4-corr

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
php-rt:tp4-corr [2016/03/28 16:59] – [Exercice 8] jcheronphp-rt:tp4-corr [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Module M2105 - RT web dyna - TD/P 4 ======+====== Module M2105 - RT web dyna - TD/P 4 Corrigé ======
  
 Prise en main du projet RT-Cloud et du micro-framework Prise en main du projet RT-Cloud et du micro-framework
Ligne 11: Ligne 11:
 ===== -- Exercices ===== ===== -- Exercices =====
  
-==== Exercice 1 ====+==== Exercice 1 : Contrôleur et chargement de données ====
  
   - Créer un contrôleur **Exemples**,    - Créer un contrôleur **Exemples**, 
Ligne 30: Ligne 30:
 } }
 </sxh> </sxh>
-==== Exercice 2 ====+==== Exercice 2 : contrôleur et vue ====
  
   - Dans le contrôleur **Exemples**, charger les Utilisateurs dans la méthode **users**.   - Dans le contrôleur **Exemples**, charger les Utilisateurs dans la méthode **users**.
Ligne 54: Ligne 54:
 </sxh> </sxh>
  
-==== Exercice 3 ====+==== Exercice 3 : contrôleur et vue Twig ====
  
   - Dans le contrôleur **Exemples**, charger les Disques dans la méthode **disques**.   - Dans le contrôleur **Exemples**, charger les Disques dans la méthode **disques**.
Ligne 78: Ligne 78:
 </sxh> </sxh>
  
-==== Exercice 4 ====+==== Exercice 4 : chargement de données avec paramètres ====
  
   - Créer la méthode **sortedUsers** pour qu'elle prenne en paramètre le champ **field** sur lequel on effectuera un tri, et un deuxième déterminant l'ordre de tri (**order** ASC ou DESC) : le champ par défaut sera "login" et l'ordre "ASC".   - Créer la méthode **sortedUsers** pour qu'elle prenne en paramètre le champ **field** sur lequel on effectuera un tri, et un deuxième déterminant l'ordre de tri (**order** ASC ou DESC) : le champ par défaut sera "login" et l'ordre "ASC".
Ligne 135: Ligne 135:
 </sxh> </sxh>
  
-==== Exercice 5 ====+==== Exercice 5 : chargement de données liées ====
  
   - Créer la méthode **usersDisques** chargeant les utilisateurs, et leurs disques (les disques de chaque utilisateur doivent être chargés explicitement)   - Créer la méthode **usersDisques** chargeant les utilisateurs, et leurs disques (les disques de chaque utilisateur doivent être chargés explicitement)
Ligne 165: Ligne 165:
 </sxh> </sxh>
  
-==== Exercice 6 ====+==== Exercice 6 : chargement d'un objet ====
  
   - Créer une méthode **displayService($id=null)** permettant de charger un service pas son id, ou d'en instancier un nouveau   - Créer une méthode **displayService($id=null)** permettant de charger un service pas son id, ou d'en instancier un nouveau
Ligne 204: Ligne 204:
 </sxh> </sxh>
  
-==== Exercice 7 ====+==== Exercice 7 : ajout d'instance ====
   - Dans le contrôleur **Exemples**, créer une méthode **serviceAdd($nom,$prix=0)** permettant de créer un service de nom $nom et de prix $prix   - Dans le contrôleur **Exemples**, créer une méthode **serviceAdd($nom,$prix=0)** permettant de créer un service de nom $nom et de prix $prix
   - Afficher ensuite le service ajouté en appelant la méthode **displayService**   - Afficher ensuite le service ajouté en appelant la méthode **displayService**
Ligne 222: Ligne 222:
 </sxh> </sxh>
  
-==== Exercice 8 ====+==== Exercice 8 : modification d'instance ====
   - Dans la vue **displayService**, afficher un bouton "Augmenter prix" si le service est existant ($edit=true)   - Dans la vue **displayService**, afficher un bouton "Augmenter prix" si le service est existant ($edit=true)
   - Créer la méthode **updatePrix($idService,$update=1)** augmentant le prix de $update   - Créer la méthode **updatePrix($idService,$update=1)** augmentant le prix de $update
Ligne 259: Ligne 259:
 } }
 </sxh>  </sxh> 
-==== Exercice 10 ====+ 
 +==== Exercice 9 : suppression d'instance ==== 
 +  - Dans la vue **displayService**, afficher un bouton "Supprimer service" si le service est existant ($edit=true) 
 +  - Créer la méthode **deleteService($idService)** permettant de supprimer le service d'id **$idService** 
 +  - Afficher un message en cas de succès ou d'échec. 
 + 
 +<sxh html;title:views/exemples/displayService.html;highlight:[14]> 
 +<div class="panel panel-default"> 
 +    <div class="panel-heading"> 
 +        <b>Service</b> 
 +    </div> 
 +    <div class="panel-body"><b>{{service.getNom()}}</b></div> 
 +    <ul class="list-group"> 
 +        <li class="list-group-item"> 
 +            <h5>Description : </h5> <span>{{service.getDescription()}}</span> 
 +        </li> 
 +        <li class="list-group-item"> 
 +            <b>Prix : </b> {{service.getPrix()}}  
 +            {%if edit %} 
 +            <a class="btn btn-primary" href="exemples/updatePrix/{{service.getId()}}/1">Augmenter prix</a> 
 +            <a class="btn btn-warning" href="exemples/deleteService/{{service.getId()}}/">Supprimer service</a> 
 +            {% endif %} 
 +        </li> 
 +    </ul> 
 +</div> 
 +</sxh> 
 + 
 + 
 +<sxh php;title:controllers/exemples.php> 
 +class Exemples extends \BaseController { 
 + ... 
 + public function deleteService($idService){ 
 + $service=DAO::getOne("Service", $idService); 
 + if(isset($service)){ 
 + DAO::delete($service); 
 + $this->_showMessage($service." supprimé","success"); 
 + }else{ 
 + $this->_showMessage("Impossible de charger le service","warning"); 
 +
 +
 +
 +</sxh>  
 +==== Exercice 10 : CRUD avec _defaultController====
   - Créer le contrôleur **Services** héritant de **_DefaultController**   - Créer le contrôleur **Services** héritant de **_DefaultController**
   - Affecter "Service" à son membre **model**   - Affecter "Service" à son membre **model**
Ligne 306: Ligne 348:
 </sxh> </sxh>
  
 +==== Exercice 11 : Ajax ====
 +
 +  - Créer une méthode **ajaxTest()** dans le contrôleur **Exemples**
 +  - La méthode **ajaxTest** doit afficher la vue **views/exemples/ajaxTest.html** ci-dessous :
 +
 +<sxh html;title:views/exemples/ajaxTest.html>
 +<div class="button-group">
 + <a class="btn btn-primary disques" href="exemples/disques" data-ajax="exemples/disques">Disques</a>
 + <a class="btn btn-primary users" href="exemples/users" data-ajax="exemples/users">Utilisateurs</a>
 +</div>
 +<div class="alert alert-info" id="message"></div>
 +<div id="response"></div>
 +</sxh>
 +
 +  * Les boutons "Disques" et "Utilisateurs" doivent afficher via ajax les résultats des urls **exemples/disques** et **exemples/users**
 +  * Le passage de la souris au dessus des boutons doit afficher un message dans l'alert Bootstrap sur le rôle respectif des boutons.
 +
 +
 +<sxh php;title:controllers/exemples.php>
 + public function ajaxTest(){
 + $this->loadView("exemples/ajaxTest.html");
 + Jquery::getOn("click", "a[data-ajax]", "","#response",array("attr"=>"data-ajax"));
 + Jquery::doJqueryOn(".disques", "mouseenter", "#message", "html","Affiche les disques existants");
 + Jquery::doJqueryOn(".users", "mouseenter", "#message", "html","Affiche les utilisateurs existants");
 + Jquery::doJqueryOn(".btn", "mouseout", "#message", "html");
 + echo Jquery::compile();
 + }
 +</sxh>
  • php-rt/tp4-corr.1459177186.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)