ServiceNotFoundException im ZendFramework 2, Beispiel von Rob Allen
den letzten paar Wochen habe ich nach ZF2 besonders Rob Allen ' s 'Album' B. , ich habe die Beispiel DB-'zf2tutorial' und Beispiel für die Tisch-'Platte', die funktioniert gut, Holen alle die Elemente, wenn ich mit php-mysql, so dass Probleme mit den Daten in der DB.
Meine local.php sieht so aus
config.autoload/local.php:
return array(
'db' => array
(
'driver' => "Pdo",
'dsn' => "mysql:dbname=zf2tutorial;hostname=localhost",
'username' => "user", //here I added my valid username
'password' => "password", //here I added my valid password
'driver_options' => array
(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
),
),
);
Module.php
**module/Album/Model.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';
}
public function getServiceConfiguration()
{
return array(
'factories' => array(
'album-table' => function($sm) //also tried this 'Album\Model\AlbumTable' => function($sm)
{
$dbAdapter = $sm->get('db-adapter');//also tried this $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$table = new AlbumTable($dbAdapter);
return $table;
},
),
);
}
}
Ich wollte nur prüfen, ob die zf2turorial/album arbeitet oder nicht, es macht diesen Fehler auslösen, die ähnlich diese post hier im stackoverlow.
Den Fehler, die es wirft, ist:
Zusätzliche Informationen:
Zend\Dienste-Verwalter\Exception\ServiceNotFoundException
File:
..\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:392
Message:
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Album\Model\AlbumTable
Ich habe ZF2 Beta 5 tutorial, aber immer noch dieses problem Auftritt. Im Falle dass, wenn jemand eine Lösung hat, bitte mit uns teilen.
Dank
- Haben Sie jemals eine Lösung dafür? Ich bin derzeit kämpfen mit genau dem gleichen Problem.
- Mir auch selbe problem!!!
- Haben, finden Sie die Lösung, die ich bin immer noch nicht 🙁
- Ich hatte das gleiche problem in der gleichen tutorial heute. Für mich, das verschieben der db und service_manager Wörterbuch [das tutorial fordert uns auf, fügen Sie diese in global.php] mein Modul (Album/config) module.config.php hat den trick.
Du musst angemeldet sein, um einen Kommentar abzugeben.
scheint, wie jemand hat vergessen zu aktualisieren, die neuesten änderungen in zf2.
die Lösung:
die Datei module/Album/Module.php enthalten diesen Inhalt:
dann müssen Sie umbenennen
zu
getServiceConfig()
ist in der Tat richtig!!!! Update der Framework-Dateien auf neuesten master, RC2, sollten Sie nicht finden, eine einzelne Konfiguration 🙂getServiceConfig()
korrekt ist. Es muss nur dieServiceProviderInterface
Linien.public function getServiceConfiguration() ist nicht die korrekte Funktion name
obwohl es nicht obligatorisch ist, sollten Sie deklarieren Sie die Klasse Modul als
Ich bin nicht sicher, aber versuchen Sie, den code in
config.autoload/global.php: wie auf diese Weise
Ändern config/autoload/global.php mit dem folgenden code:
und dann sollten Sie Ihre Datenbank-Anmeldeinformationen im config/autoload/local.php so, dass Sie nicht in das git-repository (als local.php wird ignoriert):
Wenn Sie möchten mehr Informationen finden Sie link1 oder link2
Habe gerade das gleiche Problem.
In meinem Fall war das problem, dass PHPUnit konnte nicht finden, den Schlüssel
Cache\Model\UniversityStorage
im service-manager (registry), denn es wird Hinzugefügt, in derModule
Klasse derCache
Modul und dieCache
- Moduls fehlte in der PHPUnit-config-Datei und wurde auch nicht geladen werden:/module/Application/test/phpunit.config.php
Habe ich die
Cache
Modul auf der Modul-Liste. Jetzt funktioniert es.Das problem ist, dass innerhalb config/autoload/global.php der Dienst namens "Zend\Db\Adapter\Adapter", während in module/Album/Module.php es war auf der Suche nach "Zend\Db\Adapter" (fehlende zusätzliche \Adapter).
Hinzufügen von fehlenden "\Adapter" in module/Album/Module.php wie diese Feste für mich.
In
module/Album/src/Album/Model/Album.php
verwenden Sie stattdessen:array('name' => 'striptags'),
array('name' => 'stringtrim'),
Finden Sie unter den oben genannten namespaces erstellt von Zend auf
vendor/zendframework/zendframework/library/Zend/Filter/FilterPluginManager.php
Encoutered ich habe das gleiche problem, wenn Sie versuchen, einen code implementieren, Folgen Sie zend tutorial. Der Hauptgrund ist, um-Ordner
in Module.php, getConfig(), getAutoloaderConfig() ist genug, um laufen
Wenn du immer ähnliche Fehler für die verschiedenen Module und der code scheint jus Recht, dann FÜGEN Sie einen Eintrag in der composer.json
"Album\": "Modul/Album/src/"
in der autoload-und autoload-dev Abschnitt wie diesem, bei dem Album ist der name des Moduls
nach diesem run "composer update" und laden Sie die Seite neu. prüfen Sie, ob Fehler Weg ist.