我想知道可以在模块中创建模块结构(或者看起来像这样的东西)
目前我使用管理模块,使用这样的网址:
public/admin/index/index
具有如下文件夹结构:
applications
-- modules
---- admin
------ controllers
------ views [and so on]
我想使用这些网址:
public/admin/news/index/index
public/admin/gallery/index/index
新闻和图库是模块
文件夹结构如下所示
applications
-- modules
---- admin
------ controllers
------ views
-------- scripts
---------- modules
------------ news
-------------- controllers
-------------- views [and so on]
------------ gallery
-------------- controllers
-------------- views [and so on]
这可能吗?我尝试在我的引导程序中添加另一个模块:
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Module',
'basePath' => APPLICATION_PATH . '/modules/admin/views/scripts/modules'));
但这没有成功。 我可以创建新闻,图库和这样的模块,并在我的管理布局中加载它们。一切都将与管理员的其他人一样,但我宁愿看到它(如果可能的话)
如果我想完全没有问题或有任何提示,想法,请告诉我。
答案 0 :(得分:11)
模块是逻辑链接功能的集合(例如,图库)。为了简单起见,您应该将模块的所有相关代码存储在其目录中(这还包括任何管理任务)。在您的adminModule中,您拥有其他几个模块的代码,这使得两个模块都难以重用,因为它们都依赖于AdminModule,而AdminModule依赖于所有其他模块。这完全打破了模块的想法。如果它有助于理解,你可以看到控制器作为子模块(我知道它是错的,但也许它使理解更容易)。
首先你可以这样做:
但是,您再次将一个实体的代码拆分为不同的控制器。就像在ImageController中一样,您可以处理图像的查看,但编辑和上传是在AdminController中完成的 所以(至少我是这样做的):
这使逻辑上属于一起的所有东西保持在一起。一个控制器负责一个实体的所有操作(如关于一个图像的所有操作的ImageController,关于gallerys的操作的GalleryController)。这还包括管理任务 如果你这样做,可能没有真正的AdminModule。它只是链接到每个模块/控制器的管理操作的某种导航。
您确定可以重写zf以支持子模块。这将涉及:
但是我没见过任何mvc框架,因为这通常意味着设计缺陷(再次,在我的意见中)和一般性能松散(查找自动加载器的目录越多越糟糕)。
答案 1 :(得分:0)
ZF目录结构可自定义,主要由:
setControllerDirectory()
,addPluginPath()
等。)addPath()
,addHelperPath()
_resourceLoader