Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'ai lu un sujet similaire sur le forum mais je n'arrive toujours pas à comprendre comment le serviceManager fonctionne.
Normalement les "Modules.php" de tous les modules sont fusionnés, donc si j'ai un service (factory) déclaré dans un module (utilisateur) je suis sensé pouvoir l'utiliser dans un autre module (login) non ??
Mon projet comporte pour l'instant un module Login et un module Utilisateur. Ce que je souhaite faire c'est pouvoir chercher un utilisateur dans le controller du module Login.
voilà mon code :
fichier Utilisateur\Module.php
[lang=php] namespace Utilisateur; use Utilisateur\Model\Utilisateur; use Utilisateur\Model\UtilisateurTable; use Zend\Db\ResultSet\ResultSet; use Zend\Db\TableGateway\TableGateway; use Zend\ModuleManager\Feature\AutoloaderProviderInterface; use Zend\ModuleManager\Feature\ConfigProviderInterface; class Module implements AutoloaderProviderInterface, ConfigProviderInterface { public function getAutoloaderConfig() { return array( 'Zend\Loader\ClassMapAutoloader' => array( __DIR__ . '/autoload_classmap.php', ), 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), ), ); } public function getConfig() { return include __DIR__ . '/config/module.config.php'; } public function getServiceConfig() { return array( 'factories' => array( 'Utilisateur\Model\UtilisateurTable' => function($sm) { $tableGateway = $sm->get('UtilisateurTableGateway'); $table = new UtilisateurTable($tableGateway); return $table; }, 'UtilisateurTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Utilisateur()); return new TableGateway('utilisateur', $dbAdapter, null, $resultSetPrototype); }, ), ); } }
fichier Login\Controller\LoginController.php
[lang=php] namespace Login\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; class LoginController extends AbstractActionController { protected $loginTable; protected $UtilisateurTable; public function indexAction() { return new ViewModel(array( 'users' => $this->getUtilisateurTable()->fetchAll(), )); } public function getUtilisateurTable() { if (!$this->UtilisateurTable) { $sm = $this->getServiceLocator(); $this->UtilisateurTable = $sm->get('Utilisateur\Model\UtilisateurTable'); } return $this->UtilisateurTable; } }
L'erreur que j'ai est : Zend\ServiceManager\Exception\ServiceNotFoundException
Message:
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Utilisateur\Model\UtilisateurTable
Merci d'avance
Dernière modification par ach-87 (29-03-2014 12:31:06)
Hors ligne
Salut c'est bizarre effectivement ! As-tu bien activé les 2 modules dans ton fichier application.config.php ?
Hors ligne
Salut, j'ai honte le module Utilisateur n'était pas activé. Je suis désolé de t'avoir dérangé et merci beaucoup ça fonctionne nickel
Hors ligne
Pages: 1