1. Réunion TUG
Lausanne
Présentation de Xavier Perseguers
Monday, September 21, 2009
2. Agenda
Présentation du mini-projet
Modèle de données métier Extbase
Persistence des données Extbase
Affichage et modification des informations Fluid + Extbase
Idées d’amélioration
Monday, September 21, 2009
4. Présentation du mini-projet
Cahier des charges
Base de données de films
Liste de films (titre, réalisateur, genre)
Ajout de nouveaux films
Modification des données existantes
Monday, September 21, 2009
6. Modèle de données métier
Qu’est-ce qu’un film ?
Monday, September 21, 2009
7. Modèle de données métier
Qu’est-ce qu’un film ?
Titre
Date de sortie
Acteurs Un film?
Réalisateur Genre
Phrase marquante
Monday, September 21, 2009
8. Modèle de données métier
Base de données
On l’oublie !
Elle ne sert “à rien”
On se concentre sur le métier !
N’essaie pas de tordre la cuillère, car c’est impossible.
Tu dois essayer de te concentrer pour faire éclater la vérité : la cuillère n’existe pas !
Matrix
Monday, September 21, 2009
9. Modèle de données métier
Attribut / Entité
Attribut : Informations sur un objet
nom, téléphone, âge, ...
Entité : qui a une identité, qui a des méthodes
Exemple : compte bancaire, personne
Dépendant du métier
Monday, September 21, 2009
10. Modèle de données métier
Entité, Attribut, ...
Film : Entité / Agrégat racine (Aggregate Root)
Réalisateur : relation 1:n vers une “Personne”
Genre : relation 1:n vers un “Genre”
Acteurs : relation m:n vers des “Personne”s
Personne : Entité (Entity)
Nom, Prénom, ...
Genre : Object valeur (Value Object)
Monday, September 21, 2009
12. Modèle de données métier
22.09.2009 - Génération du code
du modèle de données uniquement !
Monday, September 21, 2009
13. Modèle de données métier
Création de l’extension
Monday, September 21, 2009
14. Modèle de données métier
Création de l’extension
Monday, September 21, 2009
15. Modèle de données métier
Création de l’extension
Monday, September 21, 2009
16. Modèle de données métier
Création des objets
Classes/Domain/Model/Genre.php :
Monday, September 21, 2009
17. Modèle de données métier
Création des objets
Classes/Domain/Model/Movie.php :
Monday, September 21, 2009
18. Modèle de données métier
Création des objets
Classes/Domain/Model/Movie.php :
Compléter
avec tous les
attributs
Classe à créer
selon le même
principe
Monday, September 21, 2009
19. Modèle de données métier
Dépôt d’objets (repository)
Point d’entrée pour accéder aux entités = Guichet
Méthode add(), remove(), replace(), update()
Méthodes findAll(),
findBy*()
Monday, September 21, 2009
20. Modèle de données métier
Création des dépôts d’objets
Classes/Domain/Repository/MovieRepository.php :
Classes/Domain/Repository/PersonRepository.php :
Monday, September 21, 2009
24. Persistence des données
Création des champs
Répéter l’opération pour les tables :
tx_movies_domain_model_person
tx_movies_domain_model_movie
Relation vers une
autre entité
Monday, September 21, 2009
25. Persistence des données
Création des champs
Bon à savoir :
Colonne “director” ↔ Attribut “Director”
Colonne “firstname” ↔ Attribut “Firstname”
Colonne “release_date” ↔ Attribut “ReleaseDate”
Monday, September 21, 2009
35. Affichage des données
Fonctionnement
Création d’un plugin qui affiche les films
Le plugin contient une action (p. ex. “index”)
L’action prépare les données et les transmet à Fluid
Fluid utilise un gabarit pour afficher les informations
Monday, September 21, 2009
36. Affichage des données
Création d’un plugin
Informer TYPO3 de la présence de notre plugin :
Fichier ext_tables.php :
Avec un texte traduisible, p. ex. :
LLL:EXT:movies/Resources/Private/Language/locallang_db.xml:plugin.pi1
Monday, September 21, 2009
37. Affichage des données
Création d’un plugin
Contrôleur Classes/Controller/MovieController.php
C’est tout !
Monday, September 21, 2009
38. Affichage des données
Création d’un plugin
Gabarit Resources/Private/Templates/Movie/index.html
Nom du contrôleur Action Format de rendu
(html par défaut)
Monday, September 21, 2009
39. Affichage des données
Création d’un plugin
Gabarit Resources/Private/Templates/Movie/index.html
Tx_Movies_Domain_Model_Movie
Monday, September 21, 2009
40. Affichage des données
Création d’un plugin
Associer le code à exécuter pour afficher notre plugin
Fichier ext_localconf.php :
Monday, September 21, 2009
41. Affichage des données
Création d’un plugin
Associer le code à exécuter pour afficher notre plugin
Fichier ext_localconf.php :
Attention : nom de plugin identique à celui du fichier ext_tables.php
Monday, September 21, 2009
42. Démonstration
(ajout du plugin)
Monday, September 21, 2009
43. Modification des données
Ajouter un film
Créer l’action “new” qui est présente dans le gabarit :
Elle doit afficher un formulaire de saisie qui une fois
posté doit ajouter le nouveau film au dépôt
Monday, September 21, 2009
44. Modification des données
Ajouter un film
Gabarit Resources/Private/Templates/Movie/new.html :
Nom du contrôleur Action Format de rendu
(html par défaut)
Monday, September 21, 2009
45. Modification des données
Ajouter un film
Gabarit Resources/Private/Templates/Movie/new.html :
Monday, September 21, 2009
46. Modification des données
Ajouter un film
Actions “new” et “create” :
Monday, September 21, 2009
47. Modification des données
Ajouter un film
Référencer les nouvelles actions dans ext_localconf.php :
Monday, September 21, 2009
48. Modification des données
Modifier un film
Modifier le gabarit de la liste des films :
Enregistrer les 2 nouvelles actions :
Monday, September 21, 2009
49. Modification des données
Modifier un film
Modifier le gabarit de la liste des films :
Enregistrer les 2 nouvelles actions :
Monday, September 21, 2009
50. Modification des données
Modifier un film
Actions “edit” et “update” :
Monday, September 21, 2009
51. Modification des données
Modifier un film
Gabarit Resources/Private/Templates/Movie/edit.html :
Nom du contrôleur Action Format de rendu
(html par défaut)
en plus !
valeur actuelle
valeur actuelle
Monday, September 21, 2009
53. Idées d’amélioration
Modèle de données
Films :
Gestion des acteurs ainsi que leur(s) rôle(s)
Personnes :
Ajout / Modification
Monday, September 21, 2009
54. Idées d’amélioration
Plugins
Films :
Configuration FlexForm pour choisir un genre (DEMO)
Ajout de l’affiche dans le rendu (DEMO)
Intégration d’informations supplémentaires extraites de
http://www.imdb.com (The Internet Movie Database)
Personnes :
Ajout / Modification
Utilisation de ExtJS pour le rendu (DEMO)
Monday, September 21, 2009
56. Conclusion
Résumé
Extbase = Modèle et Contrôleur de MVC
Fluid = Vue de MVC
(mvc_extjs = “colle” entre Extbase, Fluid et ExtJS)
Monday, September 21, 2009
57. Conclusion
Résumé
Ajouter un élément
newAction (affichage du formulaire)
createAction (ajout au dépôt)
Modifier un élément
editAction (affichage du formulaire)
updateAction (mise à jour dans le dépôt)
Monday, September 21, 2009
58. Conclusion
Résumé
Mise en place délicate sans Kickstarter Extbase “complet”
Mais ...
Le jeu en vaut la chandelle !
Monday, September 21, 2009
59. Documentation et Liens
Extbase, Fluid et l’extension blog_example
http://forge.typo3.org/projects/show/typo3v4-mvc
MVC + ExtJS
http://forge.typo3.org/projects/show/extension-mvc_extjs
Présentation et fichiers
http://xavier.perseguers.ch/tutoriels/typo3/developpement/
extbase-fluid.html
Monday, September 21, 2009