我知道Phalcon的多模块应用程序结构,但是有可能有一个嵌套的模块结构,如下面的示例所示?我想要一个系统,我可以将新的子模块(用于后端,前端)热插入系统。将新模块文件夹复制到子模块文件夹时,路径,菜单条目等应自动扩展。
module-backend
controllers
models etc.
sub-modules
forum
controllers
models
etc.
news
controllers
models
etc.
users
controllers
models
etc.
module-frontend
controllers
models
sub-modules
like backend module structure
有没有办法将这些模块热插拔到系统?
答案 0 :(得分:7)
:
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
$config->application->controllersDir,
$config->application->pluginsDir,
));
$loader->registerPrefixes(
array(
"Model_" => $config->application->modelsDir,
)
);
$loader->registerNamespaces(array(
'RemoteApi' => $config->application->librariesDir . 'RemoteApi/'
));
$loader->register();
注意registerPrefixes。您可以为不同的模型注册不同的前缀,例如:
$loader->registerPrefixes(
array(
"FModel_" => $config->application->forumModels,
"NModel_" => $config->application->newsModels,
)
);
您也可以将前缀注册到其他内容。我还添加了这个例子
$loader->registerNamespaces(array(
'RemoteApi' => $config->application->librariesDir . 'RemoteApi/'
));
这样你可以在不同的命名空间下订购你的东西。
答案 1 :(得分:1)
您可以在应用程序中处理我的组织模块结构: https://github.com/oleksandr-torosh/yona-cms
模块作为单独的实体呈现: https://github.com/oleksandr-torosh/yona-cms/tree/master/app/modules
可能对您的应用程序而言,您不需要使用框中的标准多模块结构