我如何在Zend框架的其他模块中访问一个模块


How can I access one module within other modules in Zend Framework?

我已经创建了如下所示的zend框架结构

application
  - configs
  - controllers
  - models
  - modules
     - admin
         - controllers
         - models
         - views
         ...
     - user
         - controllers
         - models
         - views
         ...
     - account
         - controllers
         - models
         - views
         ...
     - profile
         - controllers
         - models
         - views
         ...
  - views   
.....

我正在创建一个应用程序,其中有两个不同的用户角色为"user"answers"admin"。用户和管理员都应该访问模块的配置文件,只有管理员可以访问帐户模块。目前我面临的问题如下

当我登录作为管理员我得到以下网址在地址栏,我得到的管理菜单和设计(布局)完全如我所料 localhost/公共/admin/指数

但是当我点击页面中的编辑配置文件链接时,我失去了管理布局,浏览器重定向到localhost/public/profile/edit URL。用户模块也有同样的问题。

我真正需要的是当我点击编辑配置文件链接时,我应该能够访问具有相同布局的页面(admin布局为admin)和url应该是这样的http://localhost/public/admin/profile/edit

是否有可能做zend框架当我有模块,我已经给出了上面?因为我需要保持系统在一个模块的基础上,我不想做同样的代码一遍又一遍。我检查了zend论坛,我无法找到我所问的正确答案。

有谁能帮我解决这个问题吗?提前感谢。亲切的问候,

是的,可以在你的系统中创建plugin_architecture,但我认为你的结构还不合适。

application
  - configs
  - controllers
  - models
  - modules
     - admin (Backend Modules)
         - user
             - controllers
             - models
             - views
             ...
         - account
             - controllers
             - models
             - views
             ...
         - profile
             - controllers
             - models
             - views
             ...
     - front (Frontend Modules)
         - user
                 - controllers
                 - models
                 - views
                 ...
             - account
                 - controllers
                 - models
                 - views
                 ...
             - profile
                 - controllers
                 - models
                 - views

你需要创建两个模块,1)后端2)前端(默认)。

你还需要破解一些编码,或者你应该创建自己的自动加载库来理解你的新url类型。例如,如果我想进入管理区域的编辑配置文件系统,那么你的url将是,

http://www.server.com/admin/profile_edit/edit/id=99

在本例中,

1) admin = module
2) profile = inner module of ADMIN 
3) edit = controller file inside profile module
4) edit = action function name in controller file (editAction())
5) id = parameter to pass 

要实现这个结构,你需要做的是,

创建你自己的自动加载库,扩展Zend库中负责从url解码模块/控制器/动作的文件和类。

我亲自创建了这个结构,它的工作。你应该在那些文件夹文件中搜索

/library/zend/Controller/Action
/library/zend/Controller/Dispatcher

该模块将被单独访问,但在布局中,您可以根据user/admin设置菜单。您需要对登录用户使用会话变量a/c,并且必须将它们传递到呈现配置文件页面的文件中。即:

将会话变量传递给索引菜单文件,并相应地显示菜单。这样布局问题就解决了。

首先,很难确定你的问题,请明确说明,这样别人会帮助你。我所理解的是"我丢失了管理布局,浏览器重定向到localhost/public/profile/edit URL。"

    你丢失了你的布局可能是因为你在当前控制器中改变了它或禁用了它。毫无疑问,为什么你不能在多个模块中使用单个布局。
  1. 浏览器被重定向,因为你这样做。

对不起,如果我不是重点,但我是我最好的理解你的问题。