我在弄清楚如何拥有模块化目录结构方面遇到了很多麻烦,能够加载要跨模块共享的资源。即,
application
--- /forms
--- /models
--- /modules
------/module1/
---------/models
------/module2/
---------/models
现在,我要做的是从模块中加载/ application / forms中的表单。我尝试过的所有内容都导致这些类无法加载。
我试过了: 1)让Zend尝试自动计算出来。 2)为应用程序路径和模块指定主引导程序中的所有路径。即,
protected function _initAutoload()
{
$front = $this->bootstrap("frontController")->frontController;
$modules = $front->getControllerDirectory();
$default = $front->getDefaultModule();
$moduleloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH
));
foreach (array_keys($modules) as $module) {
$moduleloader = new Zend_Application_Module_Autoloader(array(
'namespace' => ucfirst(strtolower($module)),
'basePath' => $front->getModuleDirectory($module))
);
}
}
3)多次在我的桌子上砸我的头。
..是的,我意识到我不需要那个模块循环,因为我在每个模块目录中都有空白的bootstraps。
欢迎任何建议。谢谢!
答案 0 :(得分:0)
试试这个:
protected function _initAutoload()
{
$autoloader = new Zend_Application_Autoloader_Resource(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH,
'resourceTypes' => array(
'form' => array(
'path' => 'forms/',
'namespace' => 'Form'
)
)
));
return $autoloader;
}
您不需要模块部件,因为您似乎已经知道了。根据需要添加其他资源类型。
由于这与您已经非常接近,可能还有另一个问题。以上应该假设:
e.g。如果您有联系表单,可以致电课程Application_Form_Contact
,这将在application/forms/Contact.php
生效。
如果您仍然遇到问题,请提供一个未找到的表单类示例,以及您调用它的方式和位置。