首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend Framework Controller to Module routing

Zend Framework Controller to Module routing
EN

Stack Overflow用户
提问于 2012-04-18 20:57:45
回答 2查看 1.2K关注 0票数 0

因此,我一直在尽我最大的努力吸收尽可能多的关于Zend框架的知识,这对我来说是相当新的,自从我第一次尝试以来,我已经有大约两周的时间了,到目前为止,我做得很好。

然而,我遇到了一个小问题,我就是搞不清楚。

事情是这样的,我有一个标准的Zend Framework项目,里面有很多模块。如下所示:

代码语言:javascript
复制
- Project
- - Application
- - - configs
- - - controllers
- - - - IndexController
- - - - WMSController
- - - forms
- - - layouts
- - - models
- - - modules
- - - - content
- - - - - controllers
- - - - - - IndexController
- - - - - models
- - - - - views
- - - - - Bootstrap
- - - views
- - - bootstrap
- - public

etc..

现在,我在WMSController的视图中设置了一个简单的测试链接,该链接应该将点击它的人定向到内容模块的IndexController。

代码语言:javascript
复制
<a href="wms/content"> test link to content module</a>

现在,正如您可能看到的那样,这个链接将不起作用,因为它指向本地主机/wms/ content,这将是WMSController中的内容操作,目前还不存在。

现在我想要做的是让wms/content实际上指向content模块的IndexController。为什么?我只是不希望用户输入localhost/content来访问内容模块,该模块是WMS的一部分。我想让他们先通过WMS控制器。

我读过很多关于路由是使用bootstrap或autoloader的解决方案的东西,但几乎所有的东西都只是帮助你将特定的url指向特定控制器中的特定操作。

我想要的是一个指向特定模块中特定控制器中的特定操作的url。

注意:所有其他控制器和视图仍然是默认生成的版本,没有对它们进行任何更改!

如果有人能向我展示一个如何做到这一点的代码示例,将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-19 17:38:24

如果我理解正确的话,您只是希望/wms/content指向模块content控制器索引操作索引。这是一种简单的路由器可以工作的情况(至少在你想变得更复杂之前是这样)

在您的application.ini中添加以下行:

代码语言:javascript
复制
resources.router.routes.content.route = "wms/content"
resources.router.routes.content.defaults.module = "content" 
resources.router.routes.content.defaults.controller = "index"
resources.router.routes.content.defaults.action = "index"

这是构建自定义路由的最简单方法。

*注意:*左数第四个参数是路由的名称,因此如果您将其与允许使用路由名称的方法(例如url() helper )一起使用,则可以只使用路由名称。

$this->url(array(), 'content');

这就是如何使用命名路由,我个人可能会考虑将我的模块重命名为wms (如果可能和实用的话),并从默认的Index控制器重定向到那里。因为一旦你开始使用指定的和自定义的路由,就很难退出...

票数 1
EN

Stack Overflow用户

发布于 2012-04-18 22:25:40

从你的问题来看你

想要强迫他们先通过WMS控制器。

你可以做一件事。无论您想在WMSController中做什么,只要用户输入localhost/content/**,您就可以将它放在模块中所有控制器的父类中:'CONTENT‘。通过这种方式,您可以在每次请求到达此控制器时检查/执行操作(无论用户是否想要转到其他模块)。

类Content_AnyController扩展了MyControllers_Controller_Action_Admin{ ....}

哪里

代码语言:javascript
复制
class Reviewmo_Controller_Action extends Zend_Controller_Action{ 
    public function init(){
    //Things you want to do each time
    }

}

这就是我认为您想要实现的目标,因为如果您只想简单地重定向到WMSController的ContentAction,您可以简单地重定向到那个控制器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10209855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档