2011-09-04 119 views
0

对我来说很简单...我是Zend框架的全新品牌!Zend框架 - 基于模块的系统架构

我试图找出最好的方式来创建一个使用Zend的CMS可扩展的模块。这些是CMS的模块,不一定是Zend的模块。例如,可能有事件注册模块,照片库模块等。我希望每个模块都定义它自己的URI,而不是在bootstrap.php的_initRoutes()中。这可以使每个模块成为一个独立的单元,就像它们在任何CMS中一样。我们的想法是,在模块的主控制器中可能会有一个钩子来定义URI信息,然后将其缓存在数据库中并由路由器使用。

的一些特殊的问题:

  1. 如若前端控制器将请求路由到一个模块“前端控制器” /主控制器,其将请求路由至模块内的特定控制器/动作?基本上,每个模块都有自己的前端控制器,负责将请求路由到控制器/操作。这样做有没有更好的结构?
  2. 有没有比使用钩子来定义URI更好的方法?

同样,我是Zend的新手,只是想弄清楚基本知识。任何输入,非常感谢!

回答

1

前端控制器是否应将请求路由到模块的“前端控制器”/主控制器,以将请求路由到模块内的特定控制器/操作?

不,你应该只有一个前端控制器。

有没有比使用钩子模块定义URI更好的方法?

如果你把每个模块一个模块ZF,您可以创建模块特定的自举类。然后,在每个模块引导类中,可以添加一个_initRoutes()方法,该方法单独为该模块定义路由。

+0

这就是完美!谢谢!我如何得到关于“启用”或“禁用”ZF模块?另外,我将如何去创建一个表或任何'安装'和'卸载'相反? –

+1

在您的主引导程序中,不是使用addModuleDirectory(它将加载所有模块),而是使用addControllerDirectory添加各个模块。所以你可以计算出哪些模块应该在站点上使用,然后遍历调用addControllerDirectory的列表。至于安装/卸载,这取决于如何以及在哪里允许启用附加模块。 –

+0

感谢您的回复。对于ZF来说我很新,并且很喜欢它。 –