Kohana 3.2被設計爲支持HMVC設計模式。 HMVC模式由嵌套的MVC三元組組成。然而據我所知,Kohana的級聯文件系統要求所有的模型和控制器都放置在頂級'classes'目錄中,並將Views放置到頂部'views'目錄中。如果模型/控制器在文件系統的頂層與視圖分離,那麼我們應該如何實現嵌套的MVC三元組?如何使用Kohana的級聯文件系統實現HMVC
回答
不知道如果你想破解該意見處理方式,但你可以擴展Kohana_View
類,以便set_filename()
函數將接受任何你想要的目錄。
如果您想要一個類似於控制器/模型的自動加載功能,您可以自己實現它。
例如(未經測試):
public function set_filename($view)
{
// Transform the class name into a path
$file = str_replace('_', '/', strtolower($view));
if ($path = Kohana::find_file('classes', $file))
{
// Store the file path locally
$this->_file = $path;
return $this;
}
throw new View_Exception('The requested view :view could not be found', array(
':view' => $view,
));
}
然而,據我所知,Kohana系統的級聯文件系統要求所有的模型和控制器放置頂「類」目錄中,並瀏覽到頂部的'views'目錄。
你似乎想要的是像Kohana 2,codeigniter和最有可能的其他框架,它有控制器,模型和視圖的專用文件夾的文件夾結構。 Kohana 3有一個專門的課程文件夾。 Kohana 3的構建方式強制控制器應該有一個Controller_前綴。 Kohana 3自動加載器將在類/控制器文件夾中查找帶有Controller_前綴的類。
然後Kohana 3還帶有非常基本的模型和視圖類。就我所知,Kohana 3核心不使用Model類,它僅在少數情況下使用View類。但是Model的前綴模型的約定可以在Model :: factory()中找到,但是它沒有被強制執行。你不必使用它們。
View類在de views文件夾中查找模板。 (由Zombor推薦)Zombor(開發人員之一)的View_Module也發生在那裏。 (由Zombor重新調整)KOstache模塊,同樣由Zombor在模板文件夾中查找它的模板。兩個模塊都允許您創建視圖模型類,其約定具有View_前綴,以便它們以類/視圖結束。但是沒有什麼能阻止你創建一個View_類,它將View的每個模板擴展到View文件夾中,並對該View-Model的路徑進行硬編碼。
請尊重classes文件夾僅適用於課程。
@ Darsstar-我認爲你的意思是:雖然Kohana 2文件系統允許在文件系統中嵌套MVC三元組,但Kohana 3強制從Views中分離模型控制器類排除了它? – Yarin
如果您選擇僅將View類用作視圖模型,則選擇將邏輯移至模板。如果您要爲每個模板創建視圖模型並將邏輯放入這些視圖模型中。然後模板只能控制應該去哪裏。由於View-Models是類,它們應該進入classes文件夾。因爲你明確地希望他們都在同一個子文件夾中,你應該給他們View_前綴。然後你得到你想要的分離。所以你在鼓勵,而不是Kohana。 Kohana剛剛帶來了一個糟糕的View-Model。 – Darsstar
- 1. Kohana框架級聯文件系統。如何將文件夾添加到此級聯鏈中?
- 2. 如何在kohana phpframework中使用「HMVC」?
- 3. 任何其他PHP框架使用級聯文件系統?
- 4. 如何使用shelve實現Python虛擬文件系統
- 5. 如何實現「級聯」ViewEngineResults?
- 6. Erlang的Kohana事件系統?
- 7. 如何實現基於文件類型的文件系統?
- 8. F中的文件系統實現#
- 9. 「隨處寫入文件系統」如何實用?它們是如何實現的?
- 10. 如何用PHP和Flex實現虛擬文件系統?
- 11. 評論系統 - 級聯
- 12. 如何實現的評論系統,只有1深度級別
- 13. 實現基本文件系統
- 14. 如何實現級聯比較器,級聯相關的對象?
- 15. 如何使用has_and_belongs_to_many關聯實現Twitter之類的關注者系統?
- 16. 如何在haskell的文件系統中實現搜索?
- 17. 如何實現文件系統與數據庫的協調?
- 18. 輕量級文件系統
- 19. Kohana管理系統
- 20. 如果發現使用系統實現,否則使用我自己的實現
- 21. 使用JSF 2實現級聯DropDown
- 22. 如何在WPF中實現系統級快捷鍵
- 23. 使用FileSystemProvider要實現FTP文件系統
- 24. 使用LKM實現Linux系統調用
- 25. 如何實現級聯下拉列表
- 26. 如何實現從qt應用程序拖放到文件系統文件夾?
- 27. Java:如何實現隊列系統來播放音頻文件?
- 28. 如何在文件系統驅動程序中實現IOCTL_REDIR_QUERY_PATH?
- 29. fseek()如何在文件系統中實現?
- 30. asp.net文件存儲系統項目如何正確實現?
這些圖表只表示邏輯繼承,並且只在控制器中表示。物理分離對此有何影響?你有什麼嘗試? – arootbeer
我的假設/希望是可以在文件系統中實現HMVC模式的物理表現以反映邏輯模式。否則,控制器將指向所有地方,HMVC的模塊化優勢將會丟失。 – Yarin