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