Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour, je me demandait s'il était possible d’accéder au service manager depuis une vue (ou layout).
En faite je voudrais passer me Acl à l'aide de vue Navigation sans avoir à les récupérer dans chaque module.
Merci
Hors ligne
Salut, tu peux le faire dans des aides de vue.
Hors ligne
Ha oui, je n'y avait pas pensé. Je vais 'surcharger' l'aide déjà existante. Merci
Hors ligne
pour ceux qui recherche la réponse à la question :
[lang=php] // depuis la vue : $helperPluginManager = $this->getHelperPluginManager(); $serviceManager = $helperPluginManager->getServiceLocator(); $monService = $serviceManager->get('monSuperService');
Hors ligne
Oui effectivement on peux faire comme ça mais c'est pas très propre. Dans la pratique tu n'es pas censé avoir accès à ta couche service depuis la vue. Pour ça tu dois passer par des aides de vues.
Hors ligne
Oui effectivement, tes conseils sont à suivre, cependant il est parfois nécessaire de passer par des choses pas très propres afin de comprendre pourquoi ce n'est pas propre !
De plus la réponse est là pour que l'on puisse comprendre les différentes imbrication du framework !
Donc en complément de ta réponse :
Pour ça tu dois passer par des aides de vues
Depuis une aide de vue :
[lang=php] // On commence par récuperer la vue : $view = $this->getView(); // et on fait la même chose depuis l'objet vue: $pluginManager = $view->getHelperPluginManager(); $serviceLocator = $pluginManager->getServiceLocator(); $monService = $serviceManager->get('monSuperService');
Hors ligne
En fait tu peux faire plus simple depuis ton aide de vue. C'est du détail mais encore une fois c'est plus propre et tu gagnes une ligne car tu n'es pas obligé de récupérer la vue.
[lang=php] $helperPluginManager = $this->getServiceLocator(); // Retourne helper plugin manager $serviceManager = $helperPluginManager->getServiceLocator(); // Retourne le service manager // et après comme tu le dis effectivement $monService = $serviceManager->get('monSuperService');
Hors ligne
En effet c'est plus efficace si on pas besoin de récupérer la vue !
Hors ligne