我正在使用opencart版本2.1.0.1并尝试使用新的脚本通知系统。 请注意,我只是安装了原始版本。没有额外添加或修改。
按照此处的教程:http://isenselabs.com/posts/opencart2-event-system-tutorial 我设法创建了一个新模块并成功安装。 我可以从数据库确认它已经注册了我想要触发的事件。
为了让您更好地了解我创建了这些文件:
现在虽然管理事件被触发没有问题,但目录(前端)订单事件永远不会触发。
在admin / controller / module / testo.php函数安装上,我有以下调用:
$this->model_extension_event->addEvent('testo', 'post.order.add', 'module/testo/on_order_add');
根据教程,要触发的函数应该在catalog / controller / model / testo.php中
public function on_order_add($order_id) { .... }
该函数只是将order_id写入文本文件,没有什么棘手的。
因此,当我完成订单时,该功能永远不会运行。 我已经尝试了大多数订单通知挂钩而没有运气。
我错过了什么吗? 有什么我不理解的吗? 请帮助,因为绝对没有文件,而且我处于死胡同(当时)
答案 0 :(得分:1)
您正在调用它,您的目录文件路径必须是
catalog/controller/module/testo.php
不是
catalog/controller/model/testo.php
因为您的触发器是
$this->model_extension_event->addEvent('testo', 'post.order.add', 'module/testo/on_order_add');
这意味着 - > Opencart将搜索catalog / controller / module / testo.php文件,当'post.order.add'触发器将执行时将调用它的on_order_add()函数(因为在目录端触发它将使用catalog / *或者它将使用admin / *),'testo'只是名称部分,非常重要。
在您的情况下,它正确搜索但您在此路径上没有任何文件,因为您已将文件添加到
catalog/controller/model/testo.php
所以改变你的文件夹结构 - >模型到模块或从模块到模型更改触发器。
答案 1 :(得分:0)
您确定写入文本文件有效吗?
因为我也尝试在我的Opencart 2.0.3.1上获得post.order.add事件,并且它工作正常。
尝试写入日志文件
<?php
class ControllerModuleTesto extends Controller
{
public function on_order_add($order_id)
{
$this->log->write("Order Id " . $order_id . " was created.");
}
}
?>
并检查后端的日志 - &gt;工具 - &gt;错误日志