2010-12-09 8 views
6

verwende ich Zend Framework mit Modulen für meine Anwendungen und Ich interessiere mich für die Integration von Lehre 2 in der gleichen Art und Weise:Zend Framework mit modularem Aufbau + Doctrine 2

Ein Modul enthält:

  • Controller
  • Modelle
  • Ansichten
  • Helfer

Das Problem mit Doctrine 2 besteht darin, dass ein Entitätsverzeichnis mit einem Proxyverzeichnis erforderlich ist. Ich möchte, dass das Entities-Verzeichnis das Modellverzeichnis meiner modularen Struktur ist, und basierend auf meinen Recherchen habe ich keine Lösung gefunden.

Derzeit mit einem Standardmodul die Metadaten Implementierung sieht wie folgt aus:

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

Wenn ich ein neues Modul hinzufügen möchten, sagen wir mal „cms“ Ich habe keine Möglichkeit, die Modelle dort mit Lehre zu verwalten.

Gibt es jemanden, der eine Lösung für das Problem hat?

+0

ich weiß, dass es ein kommender WEBINAR ist: + Lehre v2 v1 Zend Framework auf 14-Dec-2010 http://www.zend.com/en/company/news/event/webinar-zend-framework-v1-doktrin-v2 – tawfekov

Antwort

4

Nach ein paar Stunden Arbeit habe ich die richtige Lösung gefunden. Zu beachten ist, dass die Methoden newDefaultAnnotationDriver, setProxyDir und setProxyNamespace von Doctrine \ ORM \ Configuration-Klasse auch Array-Parameter empfangen können.

Nachdem dies gesagt ist, müssen Sie für jedes Modul-Arrays mit Modellbahnen passieren, und es wird in einer Anwendungsebene Ordner, hier ist meine Verzeichnisstruktur

+0

+1. Wahrscheinlich der Ansatz, den ich nehmen würde. –

0

Ich habe meine Proxies (automatisch generiert) arbeiten:

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

Wenn Sie erstellen Bootstrap-Datei für jedes Modul

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

und setzen diese in der Standard bootsrap zu Standardmodul Modelle laden

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

wird es funktionieren

+0

Ja, die Dinge haben sich geändert, seit ich die Frage gepostet habe. Jetzt gibt es verschiedene Lösungen für das Problem. Als ich schrieb, war diese Doktrine noch in der Beta und Zend Framework hatte noch keine Bootstraps :) – bedeabza