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