1

我正在尝试从控制器调用模型方法。但我收到致命错误:找不到类“GuestModel”。错误

以下是代码::

控制器 ::

class GuestController extends Zend_Controller_Action
 {

     public function indexAction(){
        $guestbook = new GuestModel();
        $this->view->entries = $guestbook->fetchAll();
     }
 }

模型::

class GuestModel extends Zend_Db_Table_Abstract
 {
 public function fetchAll()
    {
        $resultSet = $this->getDbTable()->fetchAll();
        $entries   = array();
        foreach ($resultSet as $row) {
            $entry = new Application_Model_Guestbook();
            $entry->setId($row->id)
                  ->setEmail($row->email)
                  ->setComment($row->comment)
                  ->setCreated($row->created);
            $entries[] = $entry;
        }
        return $entries;
    }


    public function getDbTable()
    {
        if (null === $this->_dbTable) {
            $this->setDbTable('Application_Model_DbTable_Guestbook');
        }
        return $this->_dbTable;
    }


 public function setDbTable($dbTable)
    {
        if (is_string($dbTable)) {
            $dbTable = new $dbTable();
        }
        if (!$dbTable instanceof Zend_Db_Table_Abstract) {
            throw new Exception('Invalid table data gateway provided');
        }
        $this->_dbTable = $dbTable;
        return $this;
    }
 }
4

1 回答 1

1

Zend Framework 自动加载依赖于使用正确的目录结构和文件命名约定来自动查找类,从您的代码的外观来看,我猜您没有遵循它。

对于您的问题,我看到了 2 种可能的解决方案:

  1. 如果可能,将您的类重命名为Application_Model_Guestbook,将文件重命名为Guestbook.php并确保将其移动到您的application/models/目录。然后你只需要在你的控制器中调用它$guestbook = new Application_Model_Guestbook(); . 检查此文档示例
  2. 创建您自己的附加自动加载规则。查看有关Resource Autoloading的官方文档。
于 2013-04-27T12:40:18.417 回答