0

JavaScript event.keyCode大全

Posted by Alan on July 19, 2014 in Coding |

JavaScript event.keyCode大全 keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter keycode 16 = Shift_L keycode 17 = Control_L keycode 18 = Alt_L keycode 19 = Pause keycode 20 = Caps_Lock keycode 27 = Escape Escape keycode 32 = space space keycode 33 = Prior keycode […]

Tags: ,

0

Magento事件和观察者模式

Posted by Alan on July 4, 2014 in Magento |

Magento中的事件(event)和观察者模式(observer pattern)相当的有意思,它使得开发者在应用流中对Magento的重要部分进行扩展。为了提供高灵活性以及促进不同模块之间的交互,Magento添加了事件/观察者模式,这一模式可以让模块之间产生松散耦合。 这一系统分为两部分,处理对象和事件信息的事件以及监听特定事件的观察者。 事件处理 事件是通过Mage::dispatchEvent()函数来创建和处理的。core内部已在core的主要部分创建了一些事件,例如,模型抽象类Mage_Core_Model_Abstract在每次模型被保存时调用_beforeSave()和_afterSave()这两个被保护的方法(protected),每个方法将会应用两个事件: protected function _beforeSave() { if (!$this->getId()) { $this->isObjectNew(true); } Mage::dispatchEvent(‘model_save_before’, array(‘object’=>$this)); Mage::dispatchEvent($this->_eventPrefix.’_save_before’, $this->_getEventData()); return $this; } protected function _afterSave() { $this->cleanModelCache(); Mage::dispatchEvent(‘model_save_after’, array(‘object’=>$this)); Mage::dispatchEvent($this->_eventPrefix.’_save_after’, $this->_getEventData()); return $this; } 每个方法应用一个常规事件mode_save_after,然后基于对象类型的动态版会被保存。这使得我们可以通过观察者来操作对象成为可能。Mage::dispatchEvent()中有两个参数,第一个是事件名,第二个是通过observer接收到的一个数组,这让我们可以轻易地对对象进行操作。 为方便大家了解事件系统的详细内容,让我们来看看Mage::dispatchEvent()方法: public static function dispatchEvent($name, array $data = array()) { $result = self::app()->dispatchEvent($name, $data); return $result; } 事实上这个函数是Mage_Core_Model_App中app core类内部dispatchEvent()的一个别名函数(/app/code/core/Mage/Core/Model/App.php): public function […]

Tags: , , , , ,

Copyright © 2012-2018 记录点滴生活 | Alan Hou的个人博客 All rights reserved.