Zend Framework 2.2 - Tutorial Fehler

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zend Framework 2.2 - Tutorial Fehler

    Hallo,

    ich bin erst seit kruzem hier registriert. Ich beschäftige mich seit ein paar Tagen mit dem Zend Framework 2.2 und um dieses besser kennen zu lernen, arbeite ich das Tuorial auf der Entwicklerseite durch.

    Der erste Meilenstein im Tutorial ist die ausgabe aller Alben aus der Datenbank und an dieser Stelle komme ich auch nicht weiter. Ich habe meinen Quellcode, mit dem der Webseite abgeglichen und ich finde keine Differnzen.

    Die Fehlermeldung:

    Quellcode

    1. An exception was raised while creating "Album\Model\AlbumTable"; no instance returned


    Der Quellcode von \module\Album\src\Album\Model\AlbumTable.php:

    Quellcode

    1. <?php
    2. namespace Album\Model;
    3. use Zend\Db\TableGateway\TableGateway;
    4. class AlbumTable {
    5. protected $tableGateway;
    6. public function __construct(TableGateway $tableGateway){
    7. $this->tableGateway = $tableGateway;
    8. }
    9. public function fetchAll() {
    10. $resultSet = $this->tableGateway->select();
    11. return $resultSet;
    12. }
    13. public function getAlbum($id) {
    14. $id = (int) $id;
    15. $rowset = $this->tableGateway->select(array('id' => $id));
    16. $row = $rowset->current();
    17. if(!$row){
    18. throw new \Exception("Could not find row $id");
    19. }
    20. return $row;
    21. }
    22. public function saveAlbum(Album $album){
    23. $data = array(
    24. 'artist' => $album->artist,
    25. 'title' => $album->title
    26. );
    27. $id = (int)$album->id;
    28. if($id == 0){
    29. $this->tableGateway->insert($data);
    30. }else{
    31. if($this->getAlbum($id)) {
    32. $this->tableGateway->update($data, array('id' => $id));
    33. } else {
    34. throw new \Exception('Form id does not exist');
    35. }
    36. }
    37. }
    38. public function deleteAlbum($id){
    39. $this->tableGateway->delete(array('id' => $id));
    40. }
    41. }
    Alles anzeigen


    Ich hoffe ich finde hier jemand der mir weiter helfen kannt, ich bedanke mich jetzt schon mal für eure Bemühungen.

    Y4roc
  • Die Fehlermeldung ist ja nicht gerade aussagekräftig ;)

    Mit Zend habe ich auch noch nie wirklich gearbeitet (ich persönlich kann nur Symfony2 empfehlen ;) ), aber dennoch...

    Wie und wo Rufst du denn deine Klasse AlbumTable auf?
  • Ich habe dies auch schon durch die Google-Suche gefunden, aber mein Problem ist anscheinend ein anderes.

    Hier die module/Album/Module.php:

    Quellcode

    1. <?php
    2. namespace Album;
    3. use Album\Model\Album;
    4. use Album\Model\AlbumTable;
    5. use Zend\Db\ResultSet\ResultSet;
    6. use Zend\Db\TableGateway\TableGateway;
    7. class Module {
    8. public function getAutoloaderConfig()
    9. {
    10. return array(
    11. 'Zend\Loader\ClassMapAutoloader' => array(
    12. __DIR__ . '/autoload_classmap.php',
    13. ),
    14. 'Zend\Loader\StandardAutoloader' => array(
    15. 'namespaces' => array(
    16. __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
    17. ),
    18. ),
    19. );
    20. }
    21. public function getConfig()
    22. {
    23. return include __DIR__ . '/config/module.config.php';
    24. }
    25. public function getServiceConfig() {
    26. return array(
    27. 'factories' => array(
    28. 'Album\Model\AlbumTable' => function ($sm){
    29. $tableGateway = $sm->get('AlbumTableGateway');
    30. $table = new AlbumTable($tableGateway);
    31. return $table;
    32. },
    33. 'AlbumTableGateway' => function ($sm) {
    34. $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
    35. $resultSetPrototype = new ResultSet();
    36. $resultSetPrototype->setArrayObjectPrototype(new Album());
    37. return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
    38. },
    39. ),
    40. );
    41. }
    42. }
    Alles anzeigen