MVC 結構
MVC 代表模型 - 檢視 - 控制器。將資料訪問,業務邏輯和使用者介面分開的任何應用程式都稱為 MVC。可以有兩種型別的 MVC:基於約定和基於配置。例如,cakePHP 是基於約定的,即你只需按照核心系統的說明操作即可在幾行內準備好模組。Magento 是基於配置的,即你需要為模組的配置檔案指定每一件事,以使其工作。Magento 有 Controller(用於路由),塊,模型和模板檔案。Magento 的 MVC 如何工作:
- 當你輸入 URL(類似於 http://mysite.com/frontname/controller/method/param1/value1/param2/value2)時 ,此 URL 被一個名為 index.php 的 PHP 檔案截獲,該檔案例項化 Magento 應用程式
- Magento 應用程式例項化 Front Controller 物件
- 此外,前端控制器例項化 Router 物件(在模組的 config.xml 中指定,全域性標記)
- 現在,路由器負責匹配URL 中的字首
- 如果找到匹配,它會在 URL 中看到控制器名稱和方法名稱,最終會被呼叫。
- 現在,根據動作名稱(方法名稱)中的內容,執行它。如果在其中呼叫任何模型,則控制器方法將例項化該模型並在其中呼叫所請求的方法。
- 然後控制器操作(方法)例項化 Layout 物件,該物件呼叫為此操作(方法)名稱指定的塊(每個控制器操作名稱都有與之關聯的塊和模板檔案,可以在 app / design / frontend 或 adminhtml /中找到 namespace / module / layout / module.xml 檔案,佈局檔案的名稱(module.xml)可以在該模組的 config.xml 中找到,在佈局更新標籤中)。
- 模板檔案(.phtml)現在為任何方法請求呼叫相應的塊。因此,如果在 .phtml 檔案中編寫$ this-> methodName,它將檢查 module.xml 檔案中關聯的塊檔案中的
methodName
。 - 塊包含 PHP 邏輯。它引用了來自 DB 的任何資料的模型。
- 如果 Block,Template 檔案或 Controller 需要從/向資料庫獲取/設定一些資料,他們可以直接呼叫 Model,如 Mage::getModel(‘modulename / modelname’)。