Модули Zend Framework с общими ресурсами - PullRequest
0 голосов
/ 31 марта 2011

У меня много проблем с выяснением того, как у нас может быть модульная структура каталогов с возможностью загрузки ресурсов, которые должны быть разделены между модулями. То есть.,

application
--- /forms
--- /models
--- /modules
------/module1/
---------/models
------/module2/
---------/models

Теперь я пытаюсь загрузить формы в / application / forms из модулей. Все, что я пробовал результаты в этих классах, чтобы не загружаться.

Я пробовал: 1) Позвольте Zend попытаться понять это автоматически. 2) Указание всех путей в основной начальной загрузке для пути приложения, а также для модулей. То есть.,

protected function _initAutoload()
{
    $front = $this->bootstrap("frontController")->frontController;
    $modules = $front->getControllerDirectory();
    $default = $front->getDefaultModule();

    $moduleloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Application',
        'basePath'  => APPLICATION_PATH
    ));

    foreach (array_keys($modules) as $module) {
        $moduleloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => ucfirst(strtolower($module)),
            'basePath'  => $front->getModuleDirectory($module))
        );
    }
}

3) Много раз ударился головой о стол.

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

Любые предложения приветствуются. Спасибо!

1 Ответ

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

Попробуйте:

protected function _initAutoload()
{
    $autoloader = new Zend_Application_Autoloader_Resource(array(
        'namespace' => 'Application',
        'basePath'  => APPLICATION_PATH,
        'resourceTypes' => array(
            'form' => array(
                'path' => 'forms/',
                'namespace' => 'Form'
            )
        )
    ));

    return $autoloader;
}

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

Поскольку это очень близко к тому, что у вас уже есть, может быть другая проблема.Вышеуказанное должно работать при условии, что:

  • APPLICATION_PATH указывает на каталог / application в вашем приложении
  • Классы форм называются Application_Form_Something
  • Имена файлов этих классовSomething.php (с учетом регистра)

например, если у вас есть контактная форма, вы можете позвонить в класс Application_Form_Contact, и он будет жить по адресу application/forms/Contact.php.

Если вы 'По-прежнему возникают проблемы, пожалуйста, включите пример класса формы, который не был найден, а также как и откуда вы его вызываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...