我知道Magento有一个类似钩子的系统,称为事件。是否有人拥有可用于确定可以调用哪些事件的完整列表或脚本?
我知道Magento有一个类似钩子的系统,称为事件。是否有人拥有可用于确定可以调用哪些事件的完整列表或脚本?
Answers:
没有所有magento事件的列表,因为大多数事件是动态命名的。
如果您问我,了解这些关键事件(及其后果)是一个很好的起点(除了nick的清单):
从Mage_Core_Model_Abstract扩展的每个对象都在加载,保存和删除方面调度很多事件:
app/code/core/Mage/Core/Model/Abstract.php:255
Mage::dispatchEvent($this->_eventPrefix.'_load_before', $params);
// e.g. sales_order_load_before, checkout_cart_load_before
例如,在对象加载后添加检查
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
在保存之前向对象添加其他数据
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
保存“父级”后要保存其他模型
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
在删除模型之前进行清理
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
在删除模型之前清理-也许之后?您仍在交易中!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
如果要确保实体已删除
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
从Mage_Core_Model_Resource_Db_Collection_Abstract扩展的集合也有两个通用事件:
例如:更改SQL以加载集合:
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:588
Mage::dispatchEvent($this->_eventPrefix.'_load_before', array(
$this->_eventObject => $this
));
// e.g. sales_order_status_history_collection_load_before
例如:向对象添加其他数据:
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:637
Mage::dispatchEvent($this->_eventPrefix.'_load_after', array(
$this->_eventObject => $this
));
// e.g. sales_order_shipment_collection_load_after
_eventPrefix
的模型事件,有针对性的请求事件,偶尔-有用的通用块的事件和日志记录,找到事件的重要性
app/code/core/Mage/Core/Model/App.php
和mage::log($eventName,null,'events.txt',true);
对dispatchEvent
方法。加载我试图观察的页面。显然,不要将其保留原样,一旦创建了var / logs / events.txt,请还原它。肮脏的,是的。很快,是的。:)
尽力而为grep 'Mage::dispatchEvent' app/ -rsn
这将为您提供特定于安装的事件列表,因为事件列表可能会有所不同,具体取决于安装的Magento版本,自定义项和扩展名。
sales_order_place_after
会发生这种情况,但是似乎将其触发的调用已被注释掉Checkout/Type/Onepage.php
。
我将其用作一个不错的备忘单http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/。它具有可以在1.7中调用的所有事件。
我知道已经回答了这个问题,我在这里添加自己的方法:
public static function dispatchEvent
(LN:〜446)在我添加开始时
//Mage::log($name, null, 'events.log', true);
然后打开var / log / events.log(〜40kb),仅在该页面上看到很多事件!:)
答案已经被接受,但我还是会在将来发布我的答案:
如果您想查看Magento拥有的事件列表,则有3个选项:
1)为此,有很多人编制了Magento活动列表
2)创建一个与controller_action_predispatch
事件挂钩的模块,该事件是在调用任何其他事件之前调用的事件。在此模块内,您可以记录已调度的一些事件:
在config.xml上添加以下内容
<events>
<controller_action_postdispatch>
<observers>
<controller_action_after>
<class>yourmodule/observer</class>
<method>hookToControllerActionPostDispatch</method>
</controller_action_after>
</observers>
</controller_action_postdispatch>
</events>
在yourmodule / Model / Observer中:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
上面将记录调度的每个事件...
3)如果您具有SSH访问权限,则可以运行以下命令以获取所有事件(及其分发事件的文件)的概述:
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
,特别是controller_front_init_before
。2)这种方法根本不会记录发送的每个事件,这是拼写错误还是不完整的部分?
我正在使用Magento开发者工具栏,该工具栏具有显示可以在加载的页面上观察到的事件的良好功能。
我在Magento的核心Mage模块上做了一个grep,并编写了一个列表,
PS如前所述,可能包含在Magento不推荐使用的函数中的事件,因此在实现之前请检查文件和行引用。
公开征求意见!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
前面列出的grep命令将呈现重复项(很多),并且不包括理解动态生成的事件名称所需的事件前缀列表。这些命令仅使用唯一值来呈现两个列表。您可以像其他grep答案一样添加-n标志,并获得我想的行号。但是问题并没有问它们在代码中都在哪里。〜_〜
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
在这里,您可以找到观察者事件的完整列表。
您可以在单个链接上找到所有后端+前端事件列表
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
如果有人需要更新的列表,我正在尝试使它保持最新:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
您可以通过以下网址找到所有magento-1x事件。https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference