2013-04-27 112 views
1

我想從控制器調用模型方法。但我得到致命錯誤:類 'GuestModel' 中找不到錯誤如何在zend框架中訪問控制器中的模型?

以下是代碼::

控制器::

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; 
    } 
} 

回答

1

。 Zend Framework的自動加載依賴於使用正確的目錄結構和文件命名約定從外觀上自動尋找類你的代碼我的猜測會是你沒有跟着它。

我看到您的問題2個可能的解決方案:

  1. 如果可能的話,你的類重命名爲Application_Model_Guestbook,該文件以Guestbook.php,並確保將其移動到您的應用程序/模型/目錄。那麼你只需要在你的控制器中調用它爲$ guestbook = new Application_Model_Guestbook();。檢查這個documentation example;
  2. 創建您自己的附加自動加載規則。檢查有關Resource Autoloading的官方文檔。