我正在学习ZF2并计划应用程序。
我想要一个包含多组模块的应用程序。每组模块最多可包含 20 多个模块。
我无法保证整个应用程序的任何模块的名称都是唯一的,但我可以保证它们在模块组中的唯一性。
理想情况下,使用主机路由器将请求路由到模块组。
例如 http://admin.mysite.com/foo/ => 'Admin/Foo/Index/Index',
http://special.mysite.com/foo/ => '特殊/Foo/Index/Index'
想法#1
我希望为每个模块组使用不同的 module_path 并在模块组周围命名模块路径以确定模块类的唯一性。但是发送到 module_autoloader 的模块似乎只关注传递的任何字符串的第一部分。
例如
array('modules' => array(
'Admin\Admin','Admin\Bob','Admin\Users'
));
这会得到我不明白的奇怪行为:
- 这三个都将指向正确的模块控制器,但它们会加载 Admin\Admin 的视图(模块列表中的第一个)而不是它们自己的视图。
- IE /users,加载 Admin\Users\IndexController 但使用视图脚本 Admin\Admin\view\admin\Index\index.phtml
我已经设法通过对 templateInjecter 的一些小改动来解决这个问题,但它看起来很乱。
想法#2
只需将模块名称添加到它们的子目录中,例如
namespace AdminAdmin\Controller,
class IndexController {}
想法
- 命名空间将优于类前缀
- 我们正在尝试尽可能多地自动化,而不是为每个模块使用硬编码的路由
- 使用共享模块的多个应用程序通过通用 cookie 主机/memcache 和 db 等进行身份验证可能是有意义的......
- 使用模块控制器等的treeRouteStack中的托管类型路由将每个模块路由到某个子域......
问题:
- 他们是这种情况或类似情况的最佳实践吗?为什么?