Zend Module Bootstrap не загружается - PullRequest
3 голосов
/ 21 февраля 2012

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

Вот сегмент в моем 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 ('debug') на любом контроллере, он не распознает, что ключ был установлен в начальной загрузке модуля.На самом деле любая синтаксическая ошибка в User_Bootstrap не работает.

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

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

Ответы [ 3 ]

7 голосов
/ 21 февраля 2012

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

  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() из своего класса Application Bootstrap. Вам это не нужно, поскольку модуль начальной загрузки модуля автоматически создаст загрузчик ресурсов для ваших User_ классов

1 голос
/ 21 февраля 2012

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

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

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

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

0 голосов
/ 29 февраля 2012

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

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

...