Zend Framework Models nicht laden von autoloader

Ich habe meine setup-Anwendung mit Zend_Application. Ich habe eine _initAutoload() Methode in meinem Bootstrap.php wich sieht wie folgt aus:

 public function _initAutoload(){
     $this->bootstrap("frontController");
     $front = $this->frontController;

     $autoloader = Zend_Loader_Autoloader::getInstance();

     $autoloader->registerNamespace('Client_');
     $autoloader->registerNamespace('Frontend_');
     $autoloader->registerNamespace('Global_');
     $autoloader->registerNamespace('Global_Helper_');
     $autoloader->setFallbackAutoloader(true);

     $modules = $front->getControllerDirectory();
     $default = $front->getDefaultModule();

     foreach (array_keys($modules) as $module) {
         if ($module === $default) {
             continue;
         }

         $autoloader->pushAutoloader(new Zend_Application_Module_Autoloader(array(  
             "namespace" => ucwords($module),
             "basePath" => $front->getModuleDirectory($module),
         )));

     }

     return $autoloader;  
 }

Ich habe setup FrontController Präfix der Standard Modul auch (scheint mehr logisch für mich) $front->setParam("prefixDefaultModule", true)

Ich denke, dass ich das übliche Verzeichnis-Struktur.

Das problem:

Ich habe subdomains für jedes Modul, dass ich habe. Alles funktioniert feine in der main - main - domain (www). Das main-Modul ist frontend. Wenn frontend ist das Standard-Modul, dann funktioniert das :). Ok. Nun. Für jede subdomain, habe ich das gleiche index.php aber es verändert die env Wert. Für client subdomain die env-Wert ist client etc. Jeder env-Wert entspricht meine application.xml Abschnitt. Jeder application.xml subdomain Abschnitt (client-api, etc) erweitern Sie die main-Sektion, die heißt defaults (derzeit gibt es einen Test-Abschnitt, auch die können Fehler usw, also jede subdomain erstreckt sich die Prüfung und testen erweitert die Standardwerte).

Jeder subdomain Abschnitt der application.xml änderungen der Standard Modul-Namen. Also für den Abschnitt defaults seiner frontend, zum Abschnitt client seinen Kunden, etc.

Jetzt

Wenn ich auf domain.com/client oder domain.com/api - seine Ordnung. Beide API & Client verwenden Client_Model_NameOfTheModel und wie es soll - es befindet sich application/modules/client/models/NameOfTheModel.php und die DbTable/NameOfTheModel.php
FUNKTIONIERT

ABER
Wenn ich auf das Modul von seiner jeweiligen subdomain (client.domain.com, api.domain.com etc) und das Standard-Modul wurde geändert von frontend zu seinem jeweiligen subdomain-Modul Namen - es endet die Arbeit. Es auch keine Ausgabe, die "stack-trace".

Warning: include(Client/Model/ContactLists.php) [function.include]: failed to open stream: Keine solche Datei oder Verzeichnis in [hier ist-mein-Weg-zu-Stammverzeichnis]/library/Zend/Loader.php on line 136

Warning: include() [function.include]: Failed opening 'Client/Model/ContactLists.php' for inclusion (include_path='[hier ist-mein-Weg-zu-root]/library:.:/usr/lib/php:/usr/local/lib/php') in [hier ist-mein-Weg-zu-Stammverzeichnis]/library/Zend/Loader.php on line 136

Fatal error: Class 'Client_Model_ContactLists' not found in [hier ist-mein-Weg-zu-Stammverzeichnis]/application/modules/client/controllers/ContactListsController.php auf der Linie 4

Ich habe versucht 2 Tage, um es arbeiten. Es funktioniert einfach nicht. Es funktioniert einfach unter die Standard-Domäne und nicht bei der application.xml ändert das Standard-Modul, um Ihre sub-Domain-Namen. Wie, die. Dieser Punkt ist sehr sehr wichtig momentan, weil ich nicht weiter und diese app braucht, um aus der sandbox (in der frühen beta-Version bis Ende dieser Woche.

Dank für jeden für ein paar Ratschläge.

PS. Sorry für die schlechte Englisch. Es ist nicht meine Muttersprache

InformationsquelleAutor Reyo | 2010-01-21
Schreibe einen Kommentar