Annexes
Annexe I: organigramme du Parc national de la Vanoise
(novembre 2014) 35
Annexe II: modèle de la base de données
36
Annexe III: création d'un
bundle sur Symfony2 37
Annexe IV: mapping de la base de
données avec Doctrine 38
Annexe V: exemple de
contrôleurs 40
Annexe VI: extrait du module général de
l'application (appCables) 41
Annexe VII: exemple de configuration
d'un schéma 42
Annexe VIII: tableau des
fonctionnalités 44
< / Développement d'une application de
cartographie interactive sur internet >
Annexe I: organigramme du Parc national de la Vanoise
(novembre 2014)
Université Jean Monnet de Saint-Etienne Khadim
MBACKE
35
< / Développement d'une application de
cartographie interactive sur internet >
Annexe II: modèle de la base de
données
Université Jean Monnet de Saint-Etienne Khadim
MBACKE
36
Université Jean Monnet de Saint-Etienne Khadim
MBACKE
37
< / Développement d'une application de
cartographie interactive sur internet >
Annexe III: création d'un bundle sur
Symfony2
Je montre ici un exemple de la création d'un squelette ou
bundle sur Symfony2:
php app/console generate:bundle
Cette commande génère une nouvelle structure de
bundle et l'active automatiquement dans le projet.
Il faut ensuite suivre les instructions de la commande qui
nous demandera par la suite le nom du bundle, le format des fichiers de
configurations...
Le bundle sera automatiquement ajouté dans le projet, par
défaut dans le répertoire src du
projet :
Université Jean Monnet de Saint-Etienne Khadim
MBACKE
38
< / Développement d'une application de
cartographie interactive sur internet >
Annexe IV: mapping de la base de données
avec Doctrine
Il faut lancer une commande linux*
qui va créer l'image de la base de données dans le projet
Symfony2 :
$ php app/console doctrine:mapping:convert yml
./src/PNV/CablesBundle/Resources/config/doctrine/metadata/orm
--from-database -force
|
Le fichier de métadonnées
généré ressemble à ça :
1. PNV\CablesBundle\Entity\AiresView:
2. type: entity
3. table: cables.vue_aires_aigle
4. schema: cables
5. repositoryClass:
PNV\CablesBundle\Repositories\AiresView
6. id:
7. id:
8. type: integer
9. id: true
10. generator:
11. strategy: AUTO
12. fields:
13. commentaires:
14. type: string
15. lieu:
16. type: string
17. source:
18. type: string
19. geom:
20. type: json_array
Ce fichier représente l'image de la table ou de la vue
dans la base de données et permet de générer par la suite
les classes entités.
Les entités sont des classes métiers qui
représentent chaque objet de notre application. Elles sont
stockées par défaut dans le répertoire « Entity
». Pour les générer à partir d'une base existante, il
faut exécuter deux requêtes :
$ php app/console doctrine:mapping:import PNVCablesBundles
annotation $ php app/console doctrine:generate:entities PNVCablesBundles
|
La première requête va importer le schéma
depuis la base de données pour construire les classes d'entité.
Doctrine va ainsi transformer les champs des tables de la base en
propriétés privées (private).
La deuxième génère des méthodes
qu'on appelle les « getters » et les «
setters » pour ces propriétés
déclarées. Le getter est un accesseur qui permet de
récupérer la valeur d'une
Université Jean Monnet de Saint-Etienne Khadim
MBACKE
39
< / Développement d'une application de
cartographie interactive sur internet >
propriété donnée (GetId
par exemple) et le setter est un mutateur qui lui permet de
définir cette valeur (SetId par exemple). Le
fichier entité généré ressemble à ça
:
1. <?php
2.
3. namespace PNV\CablesBundle\Entity;
4.
5. use Doctrine\ORM\Mapping as ORM;
6.
7. /**
8. * AiresView
9. */
10. class AiresView
11. {
12. /**
13. * @var integer
14. */
15. private $id;
16.
17. /**
18. * @var string
19. */
20. private $commentaires;
21.
22. /**
23. * Get id
24. *
25. * @return integer
26. */
27. public function getId()
28. {
29. return $this->id;
30. }
31.
32. /**
33. * Set commentaires
34. *
35. * @param string $commentaires
36. * @return AiresView
37. */
38. public function setCommentaires($commentaires)
39. {
40. $this->commentaires = $commentaires;
41.
42. return $this;
43. }
44.
45. /**
46. * Get commentaires
47. *
48. * @return string
49. */
50. public function getCommentaires()
51. {
52. return $this->commentaires;
53. }
54. }
Université Jean Monnet de Saint-Etienne Khadim
MBACKE
40
< / Développement d'une application de
cartographie interactive sur internet >
Annexe V: exemple de contrôleurs
? Exemple de type NomController.php
1. <?php
2.
3. namespace PNV\CablesBundle\Controller;
4.
5. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
6.
7. use
Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
8.
9. use Symfony\Component\HttpFoundation\JsonResponse;
10. use Symfony\Component\HttpFoundation\Request;
11.
12. use Commons\Exceptions\DataObjectException;
13. use Commons\Exceptions\CascadeException;
14.
15. use Symfony\Component\HttpFoundation\BinaryFileResponse;
16.
17.
18. class AiresViewController extends Controller{
19.
20. // path: GET /cables/aires
21. public function listAction(){
22. /*
23. * retourne la liste des aires "cables"
24. */
25. $ss = $this->get('airesService');
26.
27. return new JsonResponse($ss->getList());
28. }
29. }
?
1.
|
Exemple de type
NomConfigController.php
class AiresConfigController extends Controller{
|
2.
|
|
|
|
3.
|
|
// path : GET cables/config/aires/form
|
|
4.
|
|
public function getFormAction(){
|
|
5.
|
|
|
|
6.
|
');
|
$file = file_get_contents(__DIR__ .
|
'/../Resources/clientConf/aires/form.yml
|
7.
|
|
$out = Yaml::parse($file);
|
|
8.
|
|
|
|
9.
|
|
return new JsonResponse($out);
|
|
10.
|
|
}
|
|
|
Ce fichier appel ainsi d'autres fichiers de configuration dans
lequel sont définies les schémas pour nos listes, détails
et formulaires.
< / Développement d'une application de
cartographie interactive sur internet >
|