2010-09-12 4 views
4

Я закончил свое первое веб-приложение в рамках MVC zend и все отлично работает на моем локальном хосте.Автозагрузка класса в MVC Zend Framework не работает

Поэтому я загружаю его на сервер, и есть проблема с автозагрузкой моего класса. я получаю сообщение об ошибке, когда я хочу создать объект из моего класса в IndexController:

$this->view->bottomCache = new Application_Model_Cache($this->cacheTime,'bottomCache'); 

И я получаю это Сообщение об ошибке:

Fatal error: Class 'Application_Model_Cache' not found in ........./IndexController.php on line 19 

На моем локальном хосте Я использую Zend Server CE и там работает ,

Пожалуйста, дайте мне несколько советов, что я могу проверить, чтобы узнать, почему он не работает?

РЕШИТЬ: первая буква имени класса должна быть в верхнем регистре, cache.php

EDIT2: модели папки против модели Как вы можете видеть в этом example

 
// application/models/Guestbook.php 

class Application_Model_Guestbook 
{ 

EDIT1: Я использовал учебник по http://framework.zend.com/manual/en/learning.quickstart.create-project.html, поэтому я использовал файл structu re, который есть.

 
quickstart 
|-- application 
| |-- Bootstrap.php 
| |-- configs 
| | `-- application.ini 
| |-- controllers 
| | |-- ErrorController.php 
| | `-- IndexController.php 
| |-- models 
| | |-- cache.php 
| | `-- DbTable 
| |  `-- Downloaded.php 
| `-- views 
|  |-- helpers 
|  `-- scripts 
|   |-- error 
|   | `-- error.phtml 
|   `-- index 
|    `-- index.phtml 
|-- library 
|-- public 
| |-- .htaccess 
| `-- index.php 

Bootstrap.php В моей загрузке ремень я получил:

 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
    protected function _initAutoload() { 

     $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Application_', 
        'basePath' => dirname(__FILE__), 
       ));; 
     $autoloader->addResourceType('model', 'model/', 'Model'); 
     return $autoloader; 
    } 

    protected function _initDoctype() 
    { 
    $this->bootstrap('view'); 
    $view = $this->getResource('view'); 
    $view->doctype('XHTML1_TRANSITIONAL'); 
    } 
} 

application.ini

 
[production] 
phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.params.displayExceptions = 0 
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
phpSettings.date.timezone = "Europe/London" 
resources.db.adapter = PDO_MYSQL 
resources.db.params.host = localhost 
resources.db.params.username = ***** 
resources.db.params.password = **** 
resources.db.params.dbname = ***** 
resources.db.params.charset = "utf8" 
resources.db.params.names = "utf8" 
resources.view.doctype = "XHTML1_TRANSITIONAL" 

[staging : production] 

[testing : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 

[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

ответ

1

edit2: Вы должны назвать свой кэш. php-файл Cache.php. Его случай сенситивен. Попробуй это.

Редактировать: в вашей структуре есть своя модель (см. Эту папку). Вы вызываете класс с

Application_Model_Cache 

Так ZF ищет его в приложении/модели /.

Так изменить класс

Application_Models_Cache 

Не забудьте сделать это в коде классов. Или изменить имя папки для моделей (кажется, вся ваши ссылки код модели, так изменяющая папки кажется самым быстрым способом.

+0

Я добавил _initAutoload, но проблема по-прежнему такая же. Я использую файловую структуру, как в учебном руководстве по быстрому запуску на framework.zend.com. – 312k1t

+0

@ 312k1t Отредактирован мой ответ. Вы используете модели в своем классе, но имеете модель папке. Для работы автозагрузчика им требуется машина. – Iznogood

+0

Я не знаю почему, но это не проблема. Это работает на моем локальном хосте, и оно также находится в учебниках. Это было одно из первых, что я изменил, но он все еще не работает. – 312k1t

0

Вашего класса Application_Model_Cache, который должен быть найден на ./application/models, где имя файла должно быть Cache .php.