ZF 版本: 1.6 在 ZF中, 做為MVC一個重要組層部分的 VIEW控制器由 三部分組成,分別是: 最外層視圖應控制器 Zend_Controller_Action_Helper_ViewRenderer, 視圖引擎核心層 Zend_View (這一部分是可以重寫的, 所謂把 ZF與Smarty整合,主要是這一部分), 視圖層最
ZF 版本: 1.6
在 ZF中, 做為MVC一個重要組層部分的 VIEW控制器由 三部分組成,分別是:
最外層視圖應控制器 Zend_Controller_Action_Helper_ViewRenderer,
視圖引擎核心層 Zend_View (這一部分是可以重寫的, 所謂把 ZF與Smarty整合,主要是這一部分),
視圖層最底層接口Zend_View_Abstract
在實際的行為控制器以及分發器中, 都是直接使用 Zend_Controller_Action_Helper_ViewRenderer, 這個在ZF 啟動程序中就需要注冊完成的, 由于底層的Zend_View_Abstract接口約束,以及最外層,ViewRenderer的規范, 致使ZF中的視圖層,變得及其靈活, 而且規范,你可以使用ZF視圖層, 也完全可以擴展自己的視圖層核心引擎.
其次,Zend_Controller_Action_Helper_ViewRenderer, 是一個標準的視圖助手, 視圖助手有部分方法, 例如 postDispatch, preDispatch 等, 這些都是和視圖助手經濟人靈活通信的方法,. 因此可以在一個分發器的前后, 可以通過這些方法,執行部分任務. 每一個動作助手都可以定義自己的 postDispatch方法等.
視圖文件命名問題:
所有的HTML視圖文件的名稱部分, 在ViewRenderer這里是做為一個ACTION進行處理的,也就是說, 在控制器類 例如:
function indexAction(){
$this->view->render($actionName);
}
其中, $actionName, 并不能完全認為就是文件名前綴部分, 如果這個名字是連貫的小寫字母,那么 這么名字就是直接的HTML視圖文件名了, 如果這里面有大小寫,那么大寫前面在模板中,默認加上了中劃線 例如 actionName, 對應的模板文件名應該是action-name.
控制器對象中的視圖對象:
這里所謂的控制器,是指對應于模塊->控制器->行為結構的控制器,例如 class Test_IndexController, 這樣的一個類 .
在ZF中, 行為控制器是又分發器dispacher來實例化,并執行的,在這個過程中, 每一個控制器都有一個默認的 initView方法會被默認執行, 因此, 每一個控制器,也自然有一個屬性 $view可以直接訪問, 例如 $this->view , 但是這里注意, 這兒$this->view 所指向的起始是視圖層三層結構中的 中間層對象, 而并非最外層的視圖控制器 View_Renderer對象, 而在輸出一個視圖的時候,會有一些初始化的工作, 是在這一部分完成的, 因此在控制器中, 不能直接調用$this->view,來操作視圖層.
如果想輸出一個對象,首先應該通過視圖助手獲得視圖對象 View_Renderer, 然后,通過這個助手來操作視圖層.
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com