簡體   English   中英

您如何確定視圖或控制器中是否有內容? (Zend框架)

[英]How do you decide if something goes in the view or the controller? (Zend Framework)

您如何確定視圖或控制器中是否有內容?

以下是一些具體示例:

  • Zend_Captcha:控制器是生成驗證碼並將其傳遞給視圖還是由視圖生成?
  • Zend_Alc:該視圖是否確定應向用戶顯示該視圖的一部分,還是根據可用操作是否具有多個視圖,並且控制器選擇合適的視圖進行顯示?
  • Zend_Session:視圖是否根據會話數據跟蹤誰在查看它,還是由控制器解析並作為某種參數呈現給視圖?

是什么組件(模型,視圖或控制器)應該做什么的規則或准則,寫在我可以查看它們的地方? 我沒有在Zend Framework網站上的文檔中看到這一點。

一般來說,這個問題可以適用於任何MVC框架。 這是我使用的准則:

  1. 瘦控制器。 如果可能的話,讓您的控制器除了在模型上調用業務邏輯並將結果傳遞給視圖外,無所不包。

  2. 視圖除了視圖邏輯外什么也不做。 做與視覺上與用戶交互有關的任何事情,例如生成驗證碼,隱藏和顯示基於ACL的鏈接。 不計算總數。 不要在模型上調用邏輯。 不要做業務邏輯。 通常,可以從視圖中讀取會話以隱藏和顯示數據/鏈接。 但是不要為了安全而依賴它:也要使您的控制器安全。

  3. 胖模型。 盡可能在模型中加入業務邏輯。 這樣,您可以在控制器之間共享它們。 如果您發現自己在控制器中遍歷模型的元素,根據某些規則重置值或執行復雜的業務邏輯,那么您應該嘗試找到一種方法將邏輯納入模型層。

希望這可以幫助。

對於Capcha,您可以在視圖中生成。 對於Acl,請使用視圖。 Zend_Session可以通過控制器和視圖訪問

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM