Magento的執行流程,一張圖就可完全說明。
magento也是mvc模式的程序,但是與普通的mvc結構又有所差異。
我們透過它的一個註冊來看他的程式執行流程:
首先,我們在網址列輸入http://localhost/magento/index.php/customer/account/create/來進入註冊的頁面。
step 1:程式拿到url中的customer會自動定位到模組app/code/core/Mage/Customer
step 2:然後程式得到account會自動定位到控制器檔案app/code/core/Mage/Customer/ controllers/AccountController.php
step 3:程式得到create,則會在剛剛找到的控制器檔案中createAction()方法。
<code>public function createAction(){ if ($this->_getSession()->isLoggedIn()) { $this->_redirect('*/*'); return; } $this->loadLayout(); $this->_initLayoutMessages('customer/session'); $this->renderLayout(); }</code>
step 4:執行程式裝載目錄 app/design/frontend/base/default/layout/下的customer.xml。然後尋找名為
<code><customer_account_create translate="label"> <label>Customer Account Registration Form</label> <!-- Mage_Customer --> <remove name="right"/> <remove name="left"/> <reference name="root"> <action method="setTemplate"><template>page/1column.phtml</template></action> </reference> <reference name="content"> <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml"> <block type="page/html_wrapper" name="customer.form.register.fields.before" as="form_fields_before" translate="label"> <label>Form Fields Before</label> </block> </block> </reference> </customer_account_create></code>
step 5:在customer.xml中定義了要使用的block和template,相對應的檔案目錄分別為:appcodecoreMageCustomerBlockFormRegister.php 和appdesignfrontendbasedefaultaultlatec使用$this來存取類別的方法。
所以,magento的程式執行流程可以歸納為這樣:
獲得執行控制器->執行方法中處理業務邏輯和模型資料->控制器實例化佈局物件->佈局物件根據請求實例化block->block與template一一對應完成顯示邏輯。