我已经使用 Zend_Application 设置了我的应用程序。_initAutoload()
我的Bootstrap.php 中有一个方法,如下所示:
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;
}
我已经设置 FrontController 也为默认模块添加前缀(对我来说似乎更合乎逻辑) $front->setParam("prefixDefaultModule", true)
我想我有通常的目录结构。
问题:
我已经为我拥有的每个模块设置了子域。在主域(www)中一切正常。主要模块是前端。如果前端是默认模块,那么东西可以工作:)。行。现在。对于每个子域,我都有相同的 index.php,但更改了env值。对于客户端子域,env 值是client等。每个 env 值对应于我的 application.xml 部分。每个 application.xml 子域部分(客户端、api 等)都扩展了称为默认值的主要部分(当前还有一个测试部分也可以启用错误等,因此每个子域都扩展了测试和测试扩展了默认值)。
application.xml 的每个子域部分都会更改默认模块名称。所以对于部分默认它的前端,对于部分客户端它的客户端,等等。
现在
当我访问domain.com/client或domain.com/api - 很好。API 和客户端都使用 Client_Model_NameOfTheModel 并且像它应该的那样 - 它位于 application/modules/client/models/NameOfTheModel.php 和 DbTable/NameOfTheModel.php
WORKS
但是 当我从其各自的子域(client.domain.com、api.domain.com 等)访问模块并且默认模块已从前端更改为其各自的子域模块名称时 - 它结束工作。它甚至不输出那个“堆栈跟踪”。
警告:include(Client/Model/ContactLists.php) [function.include]: failed to open stream: No such file or directory in [heres-my-path-to-root]/library/Zend/Loader.php 在线136
警告:include() [function.include]:无法打开“Client/Model/ContactLists.php”以包含(include_path='[heres-my-path-to-root]/library:.:/usr/lib/php :/usr/local/lib/php') 在第 136 行的 [heres-my-path-to-root]/library/Zend/Loader.php
致命错误:在第 4 行的 [heres-my-path-to-root]/application/modules/client/controllers/ContactListsController.php 中找不到类“Client_Model_ContactLists”
我已经尝试了 2 天以使其正常工作。它只是没有。它只在默认域下工作,并且在 application.xml 将其默认模块更改为其子域名时不起作用。像那样。这一点目前非常非常关键,因为我无法继续,而且这个应用程序需要在本周末之前退出沙盒(早期测试版)。
感谢任何人的建议。
PS。对不起英语不好。这不是我的母语