Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-11-2012 19:25:45

gaejin
Nouveau membre
Date d'inscription: 02-11-2012
Messages: 5

[ZF2] Service Not Found Exception

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


Code:

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 smile

Hors ligne

 

#2 03-11-2012 14:24:15

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [ZF2] Service Not Found Exception

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

 

#3 03-11-2012 18:26:52

gaejin
Nouveau membre
Date d'inscription: 02-11-2012
Messages: 5

Re: [ZF2] Service Not Found Exception

Merci pour la réponse big_smile

Voici plus de précision sur mes sources

...\module\Application\Module.php


Code:

[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

Code:

[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

Code:

[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

 

#4 04-11-2012 21:09:41

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [ZF2] Service Not Found Exception

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 big_smile

Hors ligne

 

#5 04-11-2012 21:17:29

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: [ZF2] Service Not Found Exception

Il y a beaucoup de sujets qui n'ont rien à faire dans Tribune libre big_smile


22914720

Hors ligne

 

#6 07-11-2012 21:21:15

gaejin
Nouveau membre
Date d'inscription: 02-11-2012
Messages: 5

Re: [ZF2] Service Not Found Exception

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

Code:

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

Code:

[lang=php]
<?php

namespace Album\Model;
use Zend\Db\ResultSet\Row;

class Album extends Row
{}

Hors ligne

 

#7 08-11-2012 09:53:25

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [ZF2] Service Not Found Exception

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

 

#8 09-11-2012 22:25:11

gaejin
Nouveau membre
Date d'inscription: 02-11-2012
Messages: 5

Re: [ZF2] Service Not Found Exception

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

 

#9 10-11-2012 15:58:19

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [ZF2] Service Not Found Exception

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

 

#10 10-11-2012 16:32:11

gaejin
Nouveau membre
Date d'inscription: 02-11-2012
Messages: 5

Re: [ZF2] Service Not Found Exception

Merci pour ta réponse Orkin et je pense que je vais suivre ton lien smile

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages