2009-11-30 91 views
4

我是否认为在Zend Framework中,如果我计划在我的网站上有5个页面,我通常需要5个控制器? ZF开发人员通常每页创建1个控制器(“页面”作为abtract应用程序单元)?Zend Framework:控制器类==页面?

我问这个问题的原因是,之前出于某种原因,我在控制器中填充了很多各种各样的动作,以便他们扮演页面的角色,例如,索引/添加,索引/查看,索引/删除并显示各种小屏幕,例如,小的CRUD屏幕,而不是索引操作显示的网格。

但截至目前,我想检查一下我的新理解,即动作主要用于模型更新,动作一旦运行,应立即重定向回控制器/索引。所以看来,这些观点应该主要用于指数行为,而在其他行为中则较少。

这听起来在架构上有效吗?

+0

没有任何人有设计你的Zend控制器结构的任何信息源? – jackocnr 2011-08-11 16:20:22

回答

3

我想这是做这件事的一种方法...使用你的比喻我想我使用控制器像一个“部分”和像“页面”这些部分的行动。

但是,这更多地停留在旧的过程式||静态范例页面上,因为实际上动作控制器本身对于页面或部分的作用与您作为开发人员所做的关联无关。 IE浏览器。根据应用程序的体系结构,每个页面都可能是众多操作和视图的组合。

例如,如果我有一个博客模块我可能有以下几点:

控制器:

  • PostController中
  • CommentController

浏览:

    • 显示器(显示单篇文章)
    • 名单(名单职位)
    • 编辑(创建/编辑后)
  • 评论
    • 显示(显示无评论)
    • 列表(列表评论)
    • 编辑(创建/编辑/中度评论)
    • 嵌入列表(有关职位本身使用假设这不同于显示器)
+0

然后,您将如何组织邮件的显示以及其下方的评论?不应该“显示x coments”行动进入后控制器? – AlexA 2009-11-30 19:21:08

+0

不是IMO。显示n条评论根本不显示帖子...它只显示给定帖子的n条评论。 要发布帖子下方的评论,我会在我的PostController :: displayAction中为包含注释的视图设置一个变量作为数组或集合对象。那么在显示视图中,我只需调用嵌入列表或显示视图中的评论 - 取决于两个视图是否完全不同。 – prodigitalson 2009-11-30 19:48:55

+0

ofcourse通过部分帮助器传递该评论变量,如下所示: $ this-> partial('comment/display.phtml',array('comments'=> $ this-> comments)); – prodigitalson 2009-11-30 19:52:36

1

的indexAction仅仅是用于一个给定的控制器的默认操作,用于显示默认视图(相同显示index.html或index.php页面用于子目录)是有用的。

在每个控制器的基础上创建各种动作是完全可以接受的,这些动作可能有也可能没有各自的视图(,即添加和编辑)。控制器旨在将类似的操作分组。

例如用法请参考Zend_Controller_Action上的文档。您也可能发现熟悉Zend_Controller的工作流程很有用。

2

在我看来,控制器应该总是将多个具有通用用例的方法分组。尝试找到描述应用程序功能的“名词”:这些是控制器(而动词是控制器方法)。

如果您有(例如)一个博客,你可能有:

  • ArticleListController(列出所有 文章,列出了排名前10位,上市 为标签的所有物品,...)
  • SingleArticleController(显示一个文章,添加注释,...)
  • AdminController(让你写文章)

如果您只有5页(例如家庭,关于,联系......),MVC架构可能并不适合。

相关问题