model-view-controller – 在Magento中控制器的动作之前/之后添加事件

前端之家收集整理的这篇文章主要介绍了model-view-controller – 在Magento中控制器的动作之前/之后添加事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Magento有一个控制器如下:
  1. #File: ./app/local/FilFact/Test/IndexController
  2. class FilFact_Test_IndexController extends Mage_Core_Controller_Front_Action{
  3. public function indexAction(){
  4. $this->_testConfig();
  5. }
  6. }

我需要添加两个envent:
在索引操作之前
索引动作后

我该怎么办?

这很简单,因为Mage_Core_Controller_Varien_Action基类提供了前/后调度事件.

如果您打开了Mage_Core_Controller_Varien_Action类,您可以找到两种方法preDispatch()postDispatch()

这些方法执行一些任务,最重要的是消除三个事件.

  1. controller_action_(pre|post)dispatch
  2. controller_action_(pre|post)dispatch_{{routeName}}
  3. controller_action_(pre|post)dispatch_{{fullActionName}}

fullActionName是路由名称,控制器名称和由“_”和所有小写分隔的操作名称. (见Mage_Core_Controller_Varien_Action::getFullActionName参考)

/app/code/local/FilFact/Test/etc/config.xml

  1. <?xml version="1.0"?>
  2. <config>
  3. <modules>
  4. <FilFact_Test>
  5. <version>1.0.0</version>
  6. <FilFact_Test>
  7. </modules>
  8. <global>
  9. <models>
  10. <FilFact_Test>
  11. <class>FilFact_Test_Model</class>
  12. </FilFact_Test>
  13. </models>
  14. </global>
  15. <frontend>
  16. <routers>
  17. <filfact>
  18. <use>standard</use>
  19. <args>
  20. <module>FilFact_Test</module>
  21. <frontName>filfact</frontName>
  22. </args>
  23. </filfact>
  24. </routers>
  25. <events>
  26. <controller_action_predispatch_filfact_index_index>
  27. <observers>
  28. <FilFact_Test>
  29. <class>FilFact_Test/Observer</class>
  30. <method>indexPreDispatch</method>
  31. </FilFact_Test>
  32. </observers>
  33. </controller_action_predispatch_filfact_index_index>
  34. <controller_action_postdispatch_filfact_index_index>
  35. <observers>
  36. <FilFact_Test>
  37. <class>FilFact_Test/Observer</class>
  38. <method>indexPostDispatch</method>
  39. </FilFact_Test>
  40. </observers>
  41. </controller_action_postdispatch_filfact_index_index>
  42. </events>
  43. </frontend>
  44. </config>

/app/code/local/FilFact/Test/Model/Observer.PHP

  1. <?PHP
  2. class FilFact_Test_Model_Observer
  3. {
  4. public function indexPreDispatch(Varien_Event_Observer $observer)
  5. {
  6. // TODO: Your code
  7. }
  8.  
  9. public function indexPostDispatch(Varien_Event_Observer $observer)
  10. {
  11. // TODO: Your code
  12. }
  13. }

猜你在找的PHP相关文章