Débuter avec Zend Framework 1.10 (approche MVC)
Bonjour,
Alors que la version 1.11 du Zend Framework est sortie récemment et que la version 2 est en plein développement, je vous propose une nouvelle mise à jour de la traduction du tutoriel Débuter avec Zend Framework (approche MVC) par Rob Allen qui prend en compte les améliorations de la version 1.10.
:fleche: http://s-jdm.developpez.com/tutoriel...ramework-1-10/
Vous pourrez notamment découvrir dans cette nouvelle version :
- des fonctionnalités supplémentaires de Zend_Tool (création de classes du modèle, activation du layout, ...)
- une nouvelle convention de nommage des classes par défaut mise en place automatiquement par Zend_Tool
Merci de nous faire partager à la suite vos commentaires, questions ou corrections sur cet article.
Bonne lecture !
Gestion de plusieurs tables
Un grand merci pour ce tuto d'introduction à ZF.
Mes questions sortent quelque peu du cadre de ce tuto, mais se situe tout de même dans son prolongement. Supposons qu'on étende le modèle de données avec une relation 1-n, selon le MLD suivant:
- albums(id, artiste, titre, #idStyle)
- styles(idStyle, nomStyle)
J'ai déjà re-parcouru le tutoriel et créé un deuxième contrôleur pour gérer les styles.
1. Afficher le nom du style dans la liste des albums.
Quelle est la meilleure solution (et comment la finaliser) ?
- Créer une vue dans la base de données qui fait la jointure entre les deux tables, créer dans l'application un modèle correspondant à cette vue, et ne l'utiliser que pour l'affichage de la liste (c'est ce que je fais pour l'instant);
- Dans le contrôleur, dans la méthode indexAction, construire une requête SQL qui fait la jointure;
- Dans le contrôleur, chargez les deux tables (2 fetchAll), et dans la vue, récupérer nomStyle en fonction d'idStyle dans la boucle d'affichage.
2. Afficher les noms des artistes dans la liste des styles.
Le but est d'avoir au niveau de la vue un champ multivalué et d'avoir comme résultat quelque chose comme ceci:
Style / Artiste(s) / Actions
Classique / André Rieu, Pavaroti / Editer Supprimer
Rock'n Roll / Johny, Eddie, Les Forbans / Editer Supprimer
Slows / Eddie / Editer Supprimer
Techno / (vide) / Editer Supprimer
J'avoue que je n'ai pas encore trop réfléchi, et votre point de vue serait le bienvenu.
Ma première idée est au niveau du contrôleur de charger la table styles ligne par ligne et d'effectuer une requête imbriquée pour récupérer la liste des artistes qui correspondent à ce style. Si cette idée est la bonne, quelles sont les méthodes à utiliser pour construire le modèle objet correspondant ?
D'avance merci pour votre éclairage.
à propos du contrôleur : IndexController
l'instruction :
Code:
$albums = new Application_Model_DbTable_Albums();
est répétée dans chaque action.
Ne serait il pas préférable d'ajouter une donnée d'instance comme :
Code:
1 2 3 4
| private $modelAlbums;
public function init() {
$this->modelAlbums = new Application_Model_DbTable_Albums();
} |
puis ensuite dans les actions suivantes (par exemple) :
Code:
$this->modelAlbums->ajouterAlbum($artiste, $titre);
Bien que je préférerais initialiser la donnée dans le constructeur ou dans une méthode statique (de classe) appelée par ce constructeur.
Qu'en pensez vous ?