Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tout le monde,
Je suis newbie sur l'utilisation du framework Zend.
J'utilise la version 2 de ZF et wamp server 2.2 E. Je suis le tuto de Rob Allen et je bloque lorsqu'il faut lister les albums
An error occurred An error occurred during execution; please try again later. Additional information: Zend\ServiceManager\Exception\ServiceNotFoundException File: C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:450 Message: Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for db-adapter Stack trace: #0 C:\wamp\www\zf2-tutorial\module\Album\Module.php(33): Zend\ServiceManager\ServiceManager->get('db-adapter') #1 [internal function]: Album\{closure}(Object(Zend\ServiceManager\ServiceManager), 'albumtable', 'album-table') #2 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(726): call_user_func(Object(Closure), Object(Zend\ServiceManager\ServiceManager), 'albumtable', 'album-table') #3 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(843): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Object(Closure), 'albumtable', 'album-table') #4 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(487): Zend\ServiceManager\ServiceManager->createFromFactory('albumtable', 'album-table') #5 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(442): Zend\ServiceManager\ServiceManager->create(Array) #6 C:\wamp\www\zf2-tutorial\module\Album\src\Album\Controller\AlbumController.php(29): Zend\ServiceManager\ServiceManager->get('album-table') #7 C:\wamp\www\zf2-tutorial\module\Album\src\Album\Controller\AlbumController.php(37): Album\Controller\AlbumController->getAlbumTable() #8 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(87): Album\Controller\AlbumController->indexAction() #9 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) #10 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #11 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(208): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #12 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractController.php(108): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #13 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\DispatchListener.php(113): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response)) #14 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent)) #15 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #16 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(208): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #17 C:\wamp\www\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\Application.php(297): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #18 C:\wamp\www\zf2-tutorial\public\index.php(12): Zend\Mvc\Application->run() #19 {main}
J'ai cherché partout et je n'ai toujours pas trouvé la solution, je suis même tombé sur ça mais ça ne m'a pas aidé.
Je remercie d'avance les personnes qui pourront m'aider
ps: si vous avez besoin de certains passages de mon code faites le moi savoir
Hors ligne
Salut, effectivement pour t'en dire plus il faudrait avoir un bout de ton code. Là tu demandes au service manager de te retourner l'objet qui a pour alias "db-adapter" or il ne trouve pas d'objet ayant cet alias. D'où l'erreur.
Hors ligne
Merci pour la réponse
Voici plus de précision sur mes sources
...\module\Application\Module.php
[lang=php]<?php namespace Application; use Zend\Mvc\ModuleRouteListener; use Zend\Mvc\MvcEvent; use Zend\Db\Adapter\Adapter as DbAdapter; class Module { public function onBootstrap(MvcEvent $e) { $e->getApplication()->getServiceManager()->get('translator'); $eventManager = $e->getApplication()->getEventManager(); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->attach($eventManager); } public function getConfig() { return include __DIR__ . '/config/module.config.php'; } public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), ), ); } public function getServiceConfiguration() { return array( 'factories' => array( 'db-adapter' => function($sm) { $config = $sm->get('config'); $config = $config['db']; $dbAdapter = new DbAdapter($config); return $dbAdapter; }, ), ); } }
...\module\Album\Module.php
[lang=php]<?php namespace Album; use Album\Model\AlbumTable; class Module { 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'; } // getAutoloaderConfig() and getConfig() methods here public function getServiceConfig() { return array( 'factories' => array( 'album-table' => function($sm) { $dbAdapter = $sm->get('db-adapter'); $table = new AlbumTable($dbAdapter); return $table; }, ), ); } }
...\module\Application\Module.php
[lang=php]<?php namespace Application; use Zend\Mvc\ModuleRouteListener; use Zend\Mvc\MvcEvent; use Zend\Db\Adapter\Adapter as DbAdapter; class Module { public function onBootstrap(MvcEvent $e) { $e->getApplication()->getServiceManager()->get('translator'); $eventManager = $e->getApplication()->getEventManager(); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->attach($eventManager); } public function getConfig() { return include __DIR__ . '/config/module.config.php'; } public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), ), ); } public function getServiceConfiguration() { return array( 'factories' => array( 'db-adapter' => function($sm) { $config = $sm->get('config'); $config = $config['db']; $dbAdapter = new DbAdapter($config); return $dbAdapter; }, ), ); } }
J'avais des soucis avec "getConfig()" du fichier \module\Album\Module.php. Dans le tuto la fonction s'appelle "getconfiguration()" comme celui du fichier \module\Application\Module.php.
J'ai pas compris pourquoi juste en mettant "getConfig()" pour le 1er fichier j'ai plus ce soucis mais j'ai le problème du "db-adapter"
Hors ligne
C'est la même chose pour getServiceConfiguration() ça a changé durant la béta maintenant c'est getServiceConfig(). Je sais plus si la rétro-compatibilité avait été gardé à ce niveau là donc tu peux essayer de changer ça déjà.
Par ailleurs je déplace le sujet il n'a rien à faire dans la tribune libre
Hors ligne
Il y a beaucoup de sujets qui n'ont rien à faire dans Tribune libre
Hors ligne
Bonsoir
Mon pc ou les sources étaient stockées est tombé en panne donc j'ai pas pu tester avant.
J'ai changé dans le fichier [...\module\Application\Module.php] la méthode getServiceConfiguration() en getServiceConfig() et du coup j'ai une erreur critique
Fatal error: Class 'Zend\Db\ResultSet\Row' not found in C:\wamp\www\zf2-tutorial\module\Album\src\Album\Model\Album.php on line 7 Call Stack # Time Memory Function Location 1 0.0012 672344 {main}( ) ..\index.php:0 2 0.1525 7617528 Zend\Mvc\Application->run( ) ..\index.php:12 3 0.1541 7654432 Zend\EventManager\EventManager->trigger( ) ..\Application.php:297 4 0.1542 7654432 Zend\EventManager\EventManager->triggerListeners( ) ..\EventManager.php:208 5 0.1543 7657152 call_user_func ( ) ..\EventManager.php:468 6 0.1543 7657184 Zend\Mvc\DispatchListener->onDispatch( ) ..\EventManager.php:468 7 0.1580 7795400 Zend\Mvc\Controller\AbstractController->dispatch( ) ..\DispatchListener.php:113 8 0.1580 7795968 Zend\EventManager\EventManager->trigger( ) ..\AbstractController.php:108 9 0.1581 7795968 Zend\EventManager\EventManager->triggerListeners( ) ..\EventManager.php:208 10 0.1584 7807784 call_user_func ( ) ..\EventManager.php:468 11 0.1584 7807816 Zend\Mvc\Controller\AbstractActionController->onDispatch( ) ..\EventManager.php:468 12 0.1585 7807896 Album\Controller\AlbumController->indexAction( ) ..\AbstractActionController.php:87 13 0.1585 7808816 Album\Controller\AlbumController->getAlbumTable( ) ..\AlbumController.php:37 14 0.1585 7808896 Zend\ServiceManager\ServiceManager->get( ) ..\AlbumController.php:29 15 0.1585 7809536 Zend\ServiceManager\ServiceManager->create( ) ..\ServiceManager.php:442 16 0.1585 7809584 Zend\ServiceManager\ServiceManager->createFromFactory( ) ..\ServiceManager.php:487 17 0.1585 7809584 Zend\ServiceManager\ServiceManager->createServiceViaCallback( ) ..\ServiceManager.php:843 18 0.1585 7809920 call_user_func ( ) ..\ServiceManager.php:726 19 0.1585 7809960 Album\{closure}( ) ..\ServiceManager.php:726 20 0.1752 8648888 Album\Model\AlbumTable->__construct( ) ..\Module.php:34 21 0.1752 8650416 Zend\Loader\StandardAutoloader->autoload( ) ..\Module.php:0 22 0.1752 8650496 Zend\Loader\StandardAutoloader->loadClass( ) ..\StandardAutoloader.php:217 23 0.1756 8654152 include( 'C:\wamp\www\zf2-tutorial\module\Album\src\Album\Model\Album.php' ) ..\StandardAutoloader.php:306
C'est normal j'ai rien dans [...module\Album\src\Album\Model\Album.php] (car c'est comme ça dans le tuto)
[...module\Album\src\Album\Model\Album.php
[lang=php] <?php namespace Album\Model; use Zend\Db\ResultSet\Row; class Album extends Row {}
Hors ligne
L'erreur n'a rien à voir avec le fait qu'il y ai quelque chose ou non dans la classe.
Fatal error: Class 'Zend\Db\ResultSet\Row' not found in C:\wamp\www\zf2-tutorial\module\Album\src\Album\Model\Album.php on line 7
Donc regardes ce qu'il se passe du côté de la classe qu'il n'arrive pas à trouver.
Hors ligne
J'ai regarder du coté de "Zend\Db\ResultSet\Row" mais en faite je n'avais rien xD (je vous l'avais dit que j'était débutant et dans le tuto c'est pas dit)
Donc j'ai dl le framework et j'ai dézipé le fichier "..\ZendFramework-2.0.3\library\Zend" à la racine de mon disque C mais là je ne comprends plus :
1) cela ne marche toujours pas
2) dans "..\ZendFramework-2.0.3\library\Zend\Db\ResultSet" je n'ai pas de classe Row donc je dl le framework 1 et là je trouve "\ZendFramework-1\library\\Zend\Db\Table\Row" mais ce n'est que des fichier php (bien sur cela ne marche toujours pas)
Je ne comprends plus rien. Un framework c'est pas fait pour simplifier les choses? parce que c'est pas le cas là
Hors ligne
gaejin a écrit:
Donc j'ai dl le framework et j'ai dézipé le fichier "..\ZendFramework-2.0.3\library\Zend" à la racine de mon disque C mais là je ne comprends plus :
Eu pourquoi le mettre à la racine du lecteur C ... Ton application sait qu'ils sont là bah les fichiers du framework ?
gaejin a écrit:
2) dans "..\ZendFramework-2.0.3\library\Zend\Db\ResultSet" je n'ai pas de classe Row donc je dl le framework 1 et là je trouve "\ZendFramework-1\library\\Zend\Db\Table\Row" mais ce n'est que des fichier php (bien sur cela ne marche toujours pas)
C'est un peu normal d'avoir des fichiers PHP dans un framework PHP. De plus tu veux faire fonctionner une application ZendFramework 2 avec le ZendFramework 1. Il n'y a pas quelque chose qui te choque ? De plus le ZF1 ne supporte pas les espaces de nom (à moins que ça ai été rajouté "dernièrement") donc dans tous les cas c'est impossible que ça fonctionne.
gaejin a écrit:
Je ne comprends plus rien. Un framework c'est pas fait pour simplifier les choses? parce que c'est pas le cas là
Oui c'est le cas mais quand on s'en sert correctement. Je n'avais pas été voir le tuto que tu as suivi mais c'est écrit en rouge ... :
Note : ce tutoriel est basé sur la version beta 4 de Zend Framework 2. Il peut fonctionner sur une version plus récente, mais ne fonctionnera pas sur une version antérieure.
Hors aux dernières nouvelles ont est en ZF 2.0.3 soit :
- ZF 2 Béta 5
- ZF 2 Béta 6
- ZF 2.0
- ZF 2.0.1
- ZF 2.0.2
- ZF 2.0.3
Soit 6 versions après dont une majeur donc forcément c'est peu probable que le tuto fonctionne encore.
Je t'encourage donc à aller lire la documentation officielle qui celle-ci est récente et bizarrement sur le site officiel du zendframework il y a un lien get started qui rassemble un peu tout ce qu'il faut savoir pour commencer. Et enfin un guide utilisateur pour créer commencer écrit par Rob Allen : http://framework.zend.com/manual/2.0/en … rview.html
En suivant ces informations ça devrait fonctionner sans difficulté.
Hors ligne
Merci pour ta réponse Orkin et je pense que je vais suivre ton lien
J'ai pour habitude de développer à la mano j'ai voulu changer et j'ai testé codeigniter je le trouvais plus simple (que zend), mais tout le monde dit que Zend c'est mieux.
Hors ligne