Zend Framework загружает только стандартные контроллеры модулей - PullRequest
2 голосов
/ 30 марта 2011

У меня есть два модуля, по умолчанию и admin .Хотя ZF правильно загружает макет администратора, он всегда загружает только контроллеры модулей по умолчанию и представления модулей по умолчанию.

Путь к контроллерам указывается в файле module.ini для каждого модуля.Я также попытался указать это в application.ini следующим образом:

admin.resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/admin/controllers"

Без какого-либо эффекта.Есть идеи, где проблема может быть?Мне очень понравился ZF, прежде чем я начал работать с модулями ..

Ответы [ 4 ]

7 голосов
/ 31 марта 2011

Сначала вы захотите объявить это в вашем application.ini

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

Затем поместите этот бит кода в ваш Bootstrap.php файл

public function _initAutoload()
{
    // Each module needs to be registered... 
    $modules = array(
        'Admin',
        'Default',
        'Support',
    );

    foreach ($modules as $module) {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => ucfirst($module),
            'basePath'  => APPLICATION_PATH . '/modules/' . strtolower($module),
        ));
    }

    return $autoloader;
}

Ваш каталог модулей будет выглядеть так

modules/
    |-- admin
    |   |-- controllers
    |   `-- views
    |-- default
    |   |-- controllers
    |   |-- forms
    |   |-- models
    |   `-- views
    `-- support
        |-- controllers
        |-- forms
        |-- models
        `-- views

По сути, это создаст три модуля по умолчанию , admin и support

Кстати ... Я думаю, что мы все боролись с модулями в ZF. Это просто занимает время, затем, как только это работает, это работает. Удачи.

4 голосов
/ 30 марта 2011

Вам не нужно указывать путь к контроллерам для каждого модуля. Просто добавьте следующую директиву в application.ini:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "default"
resources.modules[] = 
1 голос
/ 04 августа 2011

Чтобы получить доступ к ресурсам ваших модулей, то есть форм, моделей, плагинов и т. Д .; вам нужно добавить класс Bootstrap для модуля в корневой каталог модуля. Посмотрите на образец ниже. Просто имея это, вы можете использовать ресурсы модуля. Не стесняйтесь углубляться в это по мере необходимости.

<?php

class User_Bootstrap extends Zend_Application_Module_Bootstrap
{

}
0 голосов
/ 30 марта 2011

http://zendframework.com/manual/1.11/en/zend.application.available-resources.html

См. Раздел Zend_Application_Resource_Frontcontroller.

...