Zend Framework с модульной структурой + Doctrine 2 - PullRequest
6 голосов
/ 09 декабря 2010

Я использую Zend Framework с модулями для своих приложений, и меня интересует интеграция Doctrine 2 таким же образом:

Модуль содержит:

  • контроллеров
  • models
  • views
  • helpers

Проблема с Doctrine 2 заключается в том, что он требует наличия каталога сущностей вместе с каталогом прокси.Я хочу, чтобы каталог entity был каталогом моделей из моей модульной структуры, и на основании моих исследований я не нашел решения.

В настоящее время реализация модуля метаданных с модулем по умолчанию выглядит следующим образом:

$config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(APPLICATION_PATH . '/modules/default/models'));

Если я хочу добавить новый модуль, скажем, «cms», я не могу управлять моделями там с помощью Doctrine.

Есть ли кто-нибудь, у кого есть решение этой проблемы?

Ответы [ 3 ]

4 голосов
/ 09 декабря 2010

После нескольких часов работы я нашел правильное решение.Следует отметить, что методы newDefaultAnnotationDriver, setProxyDir и setProxyNamespace класса \ ORM \ Configuration Doctrine могут также принимать параметры массива.

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

0 голосов
/ 07 мая 2011

Если вы создадите файл начальной загрузки для каждого модуля

<?php
class User_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'User_',
            'basePath' => dirname(__FILE__) . '/modules/user',
            ));
            return $autoloader;
    }
}

и поместите его в загрузочную версию по умолчанию для загрузки моделей по умолчанию

protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default_',
            'basePath' => dirname(__FILE__) . '/modules/default',
            ));
            return $autoloader;
    }

, она будет работать нормально

0 голосов
/ 04 января 2011

У меня есть прокси (автоматически сгенерированные) в папке уровня приложения, вот моя структура каталогов:

/project
    /application
        /domain
            /proxies
        /configs
        /modules
            /blog
                /controllers
                /views
                /domain
                    /entities
                    /services
                    /repositories
    /library
    /public
    /data
...