2009-11-30 223 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架構可能並不適合。

相關問題