2012-02-21 2 views
3

У меня очень странный случай, когда мой модуль работает, но модуль загрузки модуля не загружается.Zend Module Bootstrap не загружается

Вот сегмент в моих application.ini для модуля автозагрузки:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules[] = "" 

Вот это Загрузчик:

protected function _initAutoload() 
    { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'User_', 
      'basePath' => APPLICATION_PATH .'/modules/user', 
      'resourceTypes' => array (
      'model' => array(
       'path' => 'models', 
       'namespace' => 'Model', 
       ) 
      ) 
     )); 
    } 

Структура моих модулей

Application 
--modules 
----user 
------config/ 
------controllers/ 
------models/ 
------views/ 
------Bootstrap.php 
----admin 

проблемы здесь что User_Bootstrap не загружается.

<?php 

class User_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 

    protected function _initAutoload() 
    { 
     Zend_Registry::set('debug', 'haha'); 
    } 
} 

Делая Zend_Registry :: Get («отладки») на любом контроллере, он не признает, что ключ был установлен в модуле начальной загрузки. На самом деле любая синтаксическая ошибка в User_Bootstrap не работает.

Я не знаю, почему User_Bootstrap не автозагружается. Это сводит меня с ума, потому что я занимаюсь исследованиями в течение 5 часов и даже не могу получить сообщение в блоге, близкое к этому случаю ...

Говоря о том, что мои модели и классы контроллеров автоматически загружаются.

ответ

7

Попробуйте следующее ...

  1. Измените файл application.ini использовать

    ; lose the quotes 
    resources.modules[] = 
    

    http://framework.zend.com/manual/en/zend.application.available-resources.html#zend.application.available-resources.modules См

  2. Удалить метод _initAutoload() из вашего приложения Bootstrap класс. Вам не нужно это как модуль начальная загрузка автоматически создаст загрузчик ресурсов для User_ классов

+1

+1. Побей меня. Хорошая работа, как обычно. ;-) –

1

Не уверен, но это может быть просто как неправильный случай. --Modules есть в вашей структуре, но вы продолжаете ссылаться на него как /modules. Они должны соответствовать случаю.

Надеюсь, это так просто.

Не дублируйте имена функций основного бутстрапа в своем модульном бутстрапе, насколько я знаю в ZF 1.x все обработчики будут обработаны каждым вызовом, и я думаю, что ваша _initAutoload в основном буклете переопределяет модульный бутстрап.

попробуйте назвать вашу функцию несколько иначе, как _initModuleAutoload.
По крайней мере стоит выстрел :)

+0

извини, я сделал опечатку. В моем каталоге это строчный регистр. Я не думаю, что это проблема, потому что сам модуль работает.Он загружает все контроллеры, модели и представления. Единственное, что не загружается, это Bootstrap. – shiva8

+0

@DylanSumiskum Проверьте редактирование, возможно, есть возможное решение, – RockyFord

0

Вы пробовали отключить каталог FrontController в Application.ini конфигурационного файла? Попробуйте комментирование/удалить эту строку:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

Смежные вопросы