Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je travaille sur une appli ZF2 et doctrine.
J'ai un module client qui fonctionne très bien et qui affiche mes données, en utilisant une entité, un repository, un controleur, et une vue correspondante.
Je voudrais afficher ces mêmes données sur ma page d'accueil, donc dans le module application, via la vue Module/Application/.../view/index.phtml.
Donc utiliser les données d'un module dans un autre module.
Je voudrais savoir quels sont les différents moyen de le faire.
Merci pour votre aide.
Hors ligne
Bonjour,
Alors tu as plusieurs moyen, tous plus ou ou moins maintenable. Si tu veux faire ça propre il faut que tu aies en tête que tes module doivent rester indépendant les un des autres surtout si tu n'a pas instauré de dépendance entre eux.
Puisque application étant le cœur de ton appli, je te conseille de ne pas directement appeler tes services clients directement.
Selon moi tu devrai jouer sur un évènement trigger dans le contrôleur de ta page index. Écouté par ton service client qui lui renvoie des données dans un partial déjà rendered. Et que ton controleur d'accueil n'est juste qu'a recracher tout cela;
Hors ligne
Merci pour ta réponse! Je suis novice sur zend et tu me parles un peu trop technique, même si je vois ce que tu veux dire.
En fait je suis parti sur une Factory dans laquelle j'appelle mon repository via le serviceLocator. J'imagine que c'est pas très propre mais j'ai fait au plus vite.
[lang=php]<?php namespace Application\Factory; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; use Application\Controller\IndexController; class IndexControllerFactory implements FactoryInterface{ public function createService(ServiceLocatorInterface $serviceLocator){ $realServiceLocator = $serviceLocator->getServiceLocator(); $indexMapper = $realServiceLocator->get('doctrine.entitymanager.orm_default')->getRepository('\Client\Entity\Client'); return new IndexController($indexMapper); } } ?>
Hors ligne
Salut,
utiliser une factory c'est propre par contre utiliser le repository dans un contrôleur ça c'est dégueulasse. En gros ce que je te conseil c'est d'avoir une couche service qui elle est injecté via une factory dans ton contrôleur. Et c'est ta couche service (dans ton cas un ClientService) qui lui même va avoir accès à ta couche DAO. Ce que je te conseil c'est de directement injecter l'entity manager de doctrine plutôt que le repository et dans ton service tu fais un singleton pour récupérer le repository.
Hors ligne