gpt4 book ai didi

zend-framework - Zend 模块中的模块

转载 作者:行者123 更新时间:2023-12-04 13:55:13 25 4
gpt4 key购买 nike

我想知道是否可以在模块中创建模块结构(或类似的东西)

目前我使用一个管理模块,使用这样的网址:

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]

这可能吗?我尝试在我的 Bootstrap 中添加另一个模块:
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Module',
'basePath' => APPLICATION_PATH . '/modules/admin/views/scripts/modules'));

但这并没有成功。
我可以创建新闻、图库和此类模块并将它们加载到我的管理布局中。一切都将采用与其他管理员相同的样式和菜单,但我宁愿以我的方式看待它(如果可能的话)

如果我想要一些完全不可能的事情或有任何提示、想法,请告诉我。

最佳答案

模块是逻辑链接功能的集合(例如,图库)。为简单起见,您应该将模块的所有相关代码存储在其目录中(这也包括任何管理任务)。在您的 adminModule 中,您有几个其他模块的代码,这使得这两个模块难以重用,因为它们都依赖于 AdminModule 而 AdminModule 依赖于所有其他模块。这完全打破了模块的想法。如果有助于理解,您可以将 Controller 视为子模块(我知道这是错误的,但也许它使理解更容易)。

所以起初你可以做这样的事情:

  • 图库模块
  • ImageController (viewAction, browseAction,...)
  • AdminController (editImage, uploadImage, ...)
  • ...
  • 用户模块
  • 设置 Controller
  • 管理员
  • ...

  • 但是,您再次将一个实体的代码拆分到不同的 Controller 上。就像在 ImageController 中一样,您可以处理图像的查看,但编辑和上传是在 AdminController 中完成的。
    所以(至少我是这样做的):
  • 图库模块
  • ImageController (viewAction, addAction, editAction, deleteAction, ...)
  • GalleryContoller (viewAction, addAction, editAction, deleteAction, ...)
  • ....

  • 这将逻辑上属于一起的所有东西放在一起。一个 Controller 负责一个实体的所有操作(例如,ImageController 负责与一张图像有关的所有操作,GalleryController 负责有关画廊的操作)。这还包括管理任务。
    如果你这样做,可能没有真正的 AdminModule。它只是某种链接到每个模块/ Controller 的管理操作的导航。

    你肯定可以重写 zf 来支持子模块。这将涉及:
  • 添加支持子模块的路由(简单)
  • 重写 Dispatcher 以支持子模块
  • 为子模块重写 Autoloader
  • 将其他几个目录添加到插件加载器和其他

  • 但这不是用我见过的任何 mvc 框架完成的,因为这通常意味着设计缺陷(同样,在我看来)和一般性能松散(查找自动加载器的目录越多越差)。

    关于zend-framework - Zend 模块中的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097328/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com