Zend 骨架应用程序类“Album\Model\AlbumTable”未找到

问题描述 投票:0回答:1

我正在尝试找出我的第一个使用 Zend Skeleton 应用程序的教程有什么问题。我正在使用 Zend Studio 10 + ZendServer 和 Zf2.2;设法让骨架应用程序正常工作,但现在陷入了缺少类的问题(参见下面的错误)。我尝试了各种方法,但结果是相同的:它不起作用。这是我的文件,任何帮助将不胜感激。

我的错误:

致命错误:在 C:\Program 中找不到类“Album\Model\AlbumTable” 文件\Zend\Apache2\htdocs\zf2album\module\Album\Module.php 第 55 行

相册/Module.php

命名空间相册;

使用相册\模特\相册;

使用相册\模型\AlbumTable;

使用 Zend\Db\TableGateway\TableGateway;

使用 Zend\ModuleManager\Feature\ServiceProviderInterface;

类模块实现 ServiceProviderInterface {

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\ClassMapAutoloader' => array(
            __DIR__ . '/autoload_classmap.php',
        ),
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
      // if we're in a namespace deeper than one level we need to fix the \ in the path
                __NAMESPACE__ => __DIR__ . '/src/' . str_replace('\\', '/' , __NAMESPACE__),
            ),
        ),
    );
}

public function getConfig()
{
    return include __DIR__ . '/config/module.config.php';
}



// Add this method:
public function getServiceConfig()
{
  return array(
          'factories' => array(
                  'Album\Model\AlbumTable' =>  function($sm) {
                      $tableGateway = $sm->get('AlbumTableGateway');

                      $table = new AlbumTable($tableGateway);
                      return $table;
                  },
                  'AlbumTableGateway' => function ($sm) {
                      $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                      $resultSetPrototype = new ResultSet();
                      $resultSetPrototype->setArrayObjectPrototype(new Album());
                      return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
                  },
          ),
  );
}
 }

AlbumController.php

命名空间Album\Controller;

使用 Zend\Mvc\Controller\AbstractActionController;使用 Zend\View\Model\ViewModel;

AlbumController 类扩展 AbstractActionController { 受保护 $albumTable;

public function indexAction()
{
  return new ViewModel(array(
          'albums' => $this->getAlbumTable()->fetchAll(),
  ));
}

public function addAction()
{
}

public function editAction()
{
}

public function deleteAction()
{
}

public function fooAction()
{
    // This shows the :controller and :action parameters in default route
    // are working when you browse to /album/album/foo
    return array();
}

public function getAlbumTable()
{
  if (!$this->albumTable) {
      $sm = $this->getServiceLocator();
      $this->albumTable = $sm->get('Album\Model\AlbumTable');
  }
  return $this->albumTable;
} }

AlbumModel.php

命名空间相册\模型;

使用 Zend\Db\TableGateway\TableGateway;

类相册表{ 受保护的$tableGateway;

public function __construct(TableGateway $tableGateway)
{
    $this->tableGateway = $tableGateway;
}

public function fetchAll()
{
    $resultSet = $this->tableGateway->select();
    return $resultSet;
}

public function getAlbum($id)
{
    $id  = (int) $id;
    $rowset = $this->tableGateway->select(array('id' => $id));
    $row = $rowset->current();
    if (!$row) {
        throw new \Exception("Could not find row $id");
    }
    return $row;
}

public function saveAlbum(Album $album)
{
    $data = array(
        'artist' => $album->artist,
        'title'  => $album->title,
    );

    $id = (int)$album->id;
    if ($id == 0) {
        $this->tableGateway->insert($data);
    } else {
        if ($this->getAlbum($id)) {
            $this->tableGateway->update($data, array('id' => $id));
        } else {
            throw new \Exception('Form id does not exist');
        }
    }
}

public function deleteAlbum($id)
{
    $this->tableGateway->delete(array('id' => $id));
} }
php zend-framework
1个回答
1
投票

假设这不是您问题中的拼写错误,则类

AlbumTable
的文件名应该是
AlbumTable.php
,而不是
AlbumModel.php

© www.soinside.com 2019 - 2024. All rights reserved.