2010-12-09 3 views
6

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

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

  • контроллеры
  • модели
  • просмотров
  • хелперы

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

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

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

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

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

+0

Я знаю, что есть Предстоящий Вебинар: Zend Framework v1 + v2 Доктрина 14-Dec-2010 http://www.zend.com/en/company/news/event/webinar-zend-framework-v1-doctrine-v2 – tawfekov 2010-12-09 13:52:58

ответ

4

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

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

+0

+1. Вероятно, подход, который я бы взял. – 2010-12-09 21:02:35

0

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

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

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

<?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; 
    } 
} 

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

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

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

+0

Да, все изменилось с тех пор, как я опубликовал вопрос. Теперь есть разные решения проблемы. Когда я написал эту Доктрину, все еще был в бета-версии, а у Zend Framework еще не было модульных бутстрапов :) – bedeabza 2011-07-25 13:02:55

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