PHP / Zend: фатальная ошибка - класс не найден - PullRequest
1 голос
/ 01 сентября 2011

У меня есть проект Zend со следующей структурой каталогов:

/myApp
  /application
    Bootstrap.php
    /configs
      application.ini
    /layouts
    /modules
      /default
        /controllers
          MessageController.php
          ErrorController.php
          IndexController.php
        /models
          /DbTable
            Message.php
          Message.php
          MessageMapper.php
        /views
        Bootstrap.php
      /login
        /controllers
        /forms
        /library/login
        /models
        /plugins
        /views
        Bootstrap.php
  /data/db
  /library/zend
  /public

http://localhost/ - работает нормально, но я не могу заставить работать модуль входа и сообщение внутри модуля Default.Я получаю следующую ошибку:

Неустранимая ошибка: класс 'Application_Module_Default_Model_MessageMapper' не найден в /Library/WebServer/Documents/myApp/application/modules/default/controllers/MessageController.php в строке 14

* Я уверен, что я не инициализирую то, что мне нужно.Вот как выглядит мой код ..

application.ini

autoloaderNamespaces[] ="Message_"
autoloaderNamespaces[] ="Login_"
autoloadernamespaces.0 = "Zend_"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.defaultControllerName = "index"
resources.frontController.defaultActionName = "index"
resources.frontController.params.displayExceptions = 0
resources.frontController.defaultModule = "default"
resources.frontController.params.prefixDefaultModule = "1"
resources.frontController.plugins[] = "Login_Plugin_SecurityCheck"
resources.modules = ""

/ application / bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initDoctype()
  {
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('HTML5');
  }
}

/ public / index.php

set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));

require_once 'Zend/Application.php';
require_once('Zend/Loader/Autoloader.php');
$autoloader = Zend_Loader_Autoloader::getInstance();

/ module / default / controllers / MessageController.php

$message = new Application_Module_Default_Model_MessageMapper();
$this->view->entries = $message->fetchAll();

Дайте мне знать, если какие-либо подробности помогут.Любая помощь будет высоко ценится.

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011

Вы пробовали:

$message = new Default_Model_MessageMapper(); 

Кроме того, вы автоматически загружаете свой модуль в файл модуля Bootstrap.php? Я не уверен, насколько это изменилось с тех пор, как я использовал ZF, но мне пришлось включить это:

$loader = new Zend_Application_Module_Autoloader(array(   
    'namespace' => 'Default_',
    'basePath'  => '/path/to/modules/default'
));
0 голосов
/ 26 апреля 2014

Убедитесь, что вы создали Bootstrap.php в каждом каталоге модулей, который выглядит следующим образом:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{}

В котором Admin - это имя модуля. Кроме того, убедитесь, что на самом деле есть файл Login.php внутри директории modules / admin / forms с классом Admin_Form_Login

[Zend_Form] [1.11.1] Сообщение об ошибке Фатальная ошибка: класс 'Admin_Form_Login' не найден в ... \ modules \ default \ controllers \ IndexController.php

0 голосов
/ 13 октября 2012

У меня тоже была такая же проблема, но моя причина была очень простой

у меня была форма Form_Template_Add и контроллер TemplateController . Из контроллера я вызвал форму - new Form_Template_Add ();

Моя форма находится в папке шаблона .

Ошибка с именем папки, см. 'T' в шаблоне - маленькие заглавные буквы, а 'T' для имени контроллера и класса - заглавные буквы. Я меняю имя папки на Шаблон , и это сработало ... hooya

...