opencart - Opencart 3.0.3.7 事件未捕获,无法正常工作
问题描述
注意:我在这里阅读了大量信息以及其他来源,包括官方文档。
我有一个付款延期 - 前标题 simplepay。
- 我想具体知道它是否是一种“监听”系统(预定义)事件的方式。
- 当订单状态发生变化时,我想运行一些逻辑。
在admin/controller/extension/payment/simplepay.php
我有这个(别处没有):
public function install()
{
$this->load->model('setting/event');
/** addEvent($code, $trigger, $action, $status = 1, $sort_order = 0); */
$this->model_setting_event->addEvent(
'do_transaction_on_order_status_change',
'catalog/controller/api/order/history/after',
'extension/payment/simplepay/doTransactionOnOrderStatusChange');
}
public function uninstall()
{
$this->load->model('setting/event');
/** deleteEventByCode($code); */
$this->model_setting_event->deleteEventByCode('do_transaction_on_order_status_change');
}
public function doTransactionOnOrderStatusChange(&$route, &$data)
{
// testing purpose for the moment
$log = new Log('aaaaaa.log');
$log->write('Route ' . $route);
}
该事件do_transaction_on_order_status_change
已在事件列表中正确注册。我做错了什么?
解决方案
没关系!
过了一会儿,我明白了重点。
我的方法doTransactionOnOrderStatusChange(&$route, &$data)
是用 3 个参数编写的。
喜欢doTransactionOnOrderStatusChange(&$route, &$data, &$output)
。
问题是 OC 3+ 不接受第三个参数,即使有“之前”或“之后”事件。
另一个问题是相关事件:它必须是admin/controller/sale/order/history/before
. (或/之后)
没有其他关于订单更改的事件起作用。(可能此事件是唯一的管理事件,其余来自目录)。
如果我错了,请纠正我!
推荐阅读
- autodesk-forge - 使用 Autodesk Forge,如何从 Revit 平面视图中获取尺寸对象及其属性?
- python - 在相应文件夹中的每个循环中导出?
- java - UnsatisfiedDependencyException:创建名为“empController”的 bean 时出错
- react-native - react-native-firebase 通知中的深层链接
- azure-webjobs - 如何在 Azure Webjobs 中为 NonTriggered 方法应用单例属性
- javascript - Three.js:可点击的精灵
- ubuntu - Grep 命令 - 列出以字符串和扩展名开头的文件
- sql-server - SQL:检查一个值是否存在于一个组中,如果为真,则只返回真
- .htaccess - 401 错误页面不适用于 ht 访问身份验证
- string - 使用 ISE 或 Powershell.exe 时字符串长度不同