2013-04-27 6 views
1

Я пытаюсь вызвать методы модели с контроллера. но я получаю Фатальная ошибка: Class 'GuestModel' не найден в ошибкеКак получить доступ к модели в контроллере в zend framework?

Ниже приведен код ::

Controller ::

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.
Смежные вопросы