Php Opencart 2:未触发事件

Php Opencart 2:未触发事件,php,opencart,opencart2.x,opencart-events,Php,Opencart,Opencart2.x,Opencart Events,我正在使用opencart版本2.1.0.1,并尝试使用新的脚本通知系统。 请注意,我只是安装了原始版本。没有额外添加或修改 以下是在此处找到的教程: 我成功地创建了一个新模块并安装了它。 我可以从数据库中确认它已注册我要触发的事件 为了给您提供更好的图片,我创建了以下文件: admin/controller/module/testo.php admin/view/template/module.testo.tpl admin/language/english/module/testo.php

我正在使用opencart版本2.1.0.1,并尝试使用新的脚本通知系统。 请注意,我只是安装了原始版本。没有额外添加或修改

以下是在此处找到的教程: 我成功地创建了一个新模块并安装了它。 我可以从数据库中确认它已注册我要触发的事件

为了给您提供更好的图片,我创建了以下文件:

  • admin/controller/module/testo.php
  • admin/view/template/module.testo.tpl
  • admin/language/english/module/testo.php
  • catalog/controller/module/testo.php
现在,尽管管理员事件触发没有问题,但目录(前面的)订单事件从未触发

在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写入一个文本文件,没有什么复杂的地方

因此,当我完成订单时,函数永远不会运行。 我尝试了大多数订单通知钩子,但没有成功

我错过什么了吗? 有什么我不明白的吗?
请提供帮助,因为没有任何文档,而且我目前处于死胡同中。

您的调用不正确,您的目录文件路径必须为

catalog/controller/module/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\u add()函数(因为在目录端触发器将使用catalog/*或使用admin/*),“testo”只是一个重要的名称

在您的情况下,它正在正确搜索,但您在此路径上没有任何文件,因为您已将文件添加到

catalog/controller/model/testo.php

所以,将文件夹结构->模型更改为模块,或者将触发器从模块更改为模型。

您确定写入文本文件有效吗

因为我还尝试在我的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."); 
    }
}
?>


检查后端的日志->工具->错误日志

您是否尝试过更改事件名称?不确定我是否理解您的意思?请注意,更新版本的OpenCart不再支持点表示法中的触发器;这已更改为使用路由表示法。看你是对的,但我刚才注意到那个模特是个打字错误。。我把文件放在/module文件夹中。所以问题是别的!我会编辑这篇文章。谢谢
<?php

class ControllerModuleTesto extends Controller
{
    public function on_order_add($order_id)  
    {
        $this->log->write("Order Id " . $order_id . " was created."); 
    }
}
?>