如何在magento 1 使用event for controller
在magento上開發程式時,常需要在原生程式碼前後新增功能,這時善用event功能可以省時省力,以下為新增會員之前觸發event中function的程式碼範例:
<events> <customer_logout> <observers> <sso_logout> <type>singleton</type> <class>Mio_Customer_Model_Observer</class> <method>ssoLogout</method> </sso_logout> </observers> </customer_logout> <controller_action_predispatch_customer_account_createpost> <observers> <customer_register_validate> <type>singleton</type> <class>Mio_Customer_Model_Observer</class> <method>validateRegister</method> </customer_register_validate> </observers> </controller_action_predispatch_customer_account_createpost> <sales_order_place_before> <observers> <customer_opcregister_validate> <type>singleton</type> <class>Mio_Customer_Model_Observer</class> <method>OpcRegister</method> </customer_opcregister_validate> </observers> </sales_order_place_before> </events>
我們要解析的是這個區塊的程式碼:
<controller_action_predispatch_customer_account_createpost> <observers> <customer_register_validate> <type>singleton</type> <class>Mio_Customer_Model_Observer</class> <method>validateRegister</method> </customer_register_validate> </observers> </controller_action_predispatch_customer_account_createpost>
讓我們看看以下程式碼 :
<controller_action_predispatch_customer_account_createpost>
這個標籤的意思是,要對controller執行event動作,接著看到action_predispatch連接的字串,是要告訴magento:「我想要在 customer_account_createpost之前觸發event」,也就是在extension customer→controller→account→createpost的function之前觸發event,但要觸發哪一隻function呢?,我們再看底下的標籤:
<observers> <customer_register_validate> <type>singleton</type> <class>Mio_Customer_Model_Observer</class> <method>validateRegister</method> </customer_register_validate> </observers>
<observers>標籤名稱必須固定帶入,下一層為<customer_register_validate>,這個標籤裡的名稱由我們去定義,以便於開發者辨識,其中<type>固定不變,接下來注意這段程式碼:
<method>validateRegister</method>
這裡的意思就是指,要觸發的是Mio_Customer這個extension底下的Model→Observer.php→function validateRequest()。
event功能為magento特有,可以在不改變原生架構的情況下去增加你想要的功能,善用可以幫助工作效率唷!之後我們會再介紹如何在magento 1 使用event for model,不要忘記訂閱我們的電子報,以及追蹤我們的Facebook粉絲專頁喔!
我要留言