初學者翻譯 contact:M9505506@gmail.com
開發者的Magento-第一部分-介紹Magento
什麼是Magento?他是最強的線上電子商務平台並永遠的改變了電子商務的面貌。 當然,妳已經知道了。妳可能沒有發現到Magento也是一個物件導向的PHP framework,他被用來開發現代化、動態的web application....(誇大的形容詞bla~bla~)。
Magento的MVC結構圖 Magento_MVC.pdf
模組內的程式組織
Magento組織他的單一程式成為分別的模組(Module),在一個典型的PHP model-view-Controller (MVC)應用程式中,所有的Controller將會在一個資料夾,所有的model在另一個,諸如此類。在Magento檔案是基於功能性群組在一起的被稱之為Modules. Magento的code。
Magento的程式碼
舉個例子,妳會找到控制器(Controller), 模型(Models), 協助(helpers), 區塊(blocks)等等,與結帳相關的功能在
你會找到Controller, Models, Helpers, Block 等等,與Magento的google結帳功能相關的功能在
你的程式碼
當你想要客製化或是擴展Magento,而不是直接編輯獨立的程式檔,又或甚至配置你新的Controllers, Models, Helpers, Block等到原始Magento code的裡面,你必須創建你自己的Modules
package(也常被稱為 a Namespace)是一個唯一名稱定義了你的公司或是組織名稱,用意是世上每個Mangento的社群成員,為了避免碰撞到其他的使用者的程式,在創建Modules時,都要使用他們自己的Package name
當創建一個新的Model, 你需要去告訴Magneto about it.這是透過新增一個XML檔案到資料夾下去完成的
有兩個種檔案在這個資料夾,首先開啟一個個別的Module,並且命名在下列這個XML表單裡:
Packagename_Modulename.xml
第二點是一個檔案將開啟多模組從一個Package/Namespace,並且被命名在下列的XML表單裡面:
Packagename_All.xml 附註:他只能被核心團隊使用,同Mage_All.xml
不建議啟動多個模組在一個檔案內,這樣會破壞你models的模組化規則。
基於設定檔的MVC架構
Magento是一個基於設定檔(Configuration-Based)的MVC系統,除此之外也是一個基於慣例的(convention-based)MVC系統
在一個基於慣例的系統,假如你想新增一個Controller或是一個新的Model,你只要創建檔案/類別(file/class), 那系統就會自動抓取
在一個基於設定檔的系統,像是Magento,根據新增檔案/類別到程式庫,你經常需要明確的告訴系統關於新的類別或是新的類別群組,在Magento每個模組有一個檔案名為config.xml,這隻檔案包含全部的Magento 模組的相關設定
在執行時,這些檔案會被讀到一個大型的設定樹狀結構。舉個例子來說,想要使用Models 在你自定義的Module?你需要新增一些程式碼到config.xml,用來告訴Magento你要使用Models,就像是你的Modles 應該是有的基礎類別名稱
<models> <packagename> <class>Packagename_Modulename_Model</class> <packagename> </models>
相同的對於Helper, blocks, Routes 和Controller,事件Handlers,與以及其他的。幾乎所有時間你想要塞進系統的,你都需要改變或新增config file
管控者(Controllers)
在php系統,主要的進入點存在一個php的檔案。在magento裡面沒有不同,那隻檔案是index.php。 但你永遠不用編寫index.php。在mvc系統裡,index.php將會包含 程式碼/呼叫 去編寫做到以下項目
- 監控URL
- 基於一系列規則,驅使這些URL進入Contoller的類別與其下一個Action的方法:這動作稱作路由(Routing)
- 重新實體化Controller類別與呼叫Actioin方法()
這些意指任意的進入點在Mangento(或是其他基於MVC架構的系統)是一個在Controll file的一個方法
參考以下的URL
路徑的每個在server name之後的區塊都會被如下的方式解析
前置名稱-catalog(Front name-catalog)
URL的第一部分是被呼叫的front name。這或多或少,告訴magento那一個模組他自己在Controller裡面。在以下的例子,前置名稱就是catalog,他被對應的模組配置
管控者名稱-category(Controller Name-category)
第二部分的URL告訴Magento應該要用的Controller。每一個有Controller的模組有一個特殊的資料夾,名字叫做'controller',它包含了所有,一個模組要用Controllers。以下是一個例子,關於URL部分的cotegory被轉換到Controller file裡面
檔案裡面看起來像這樣:
class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action { }
動作名稱-view(Action Name-view)
第三個在URL的部分是動作名稱。在範例中,這是一個'view'。代表的是被用以創造Action Method。所以再例子'view'將會被送進viewAction
class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action { public function viewAction() { //main entry point } }
No comments:
Post a Comment