Opencart 事件数据缺少标识符

Opencart event data missing identifier

使用 opencart 3 并尝试使用事件,但我无法找到标识符。

例如,尝试扩展 returns 表单时添加了一个事件:

$this->model_setting_event->addEvent('mail_account_return_after', 'catalog/model/account/return/addReturn/after', 'extension/module/return/returnAdd');

控制器:

class ControllerExtensionModuleReturn extends Controller {

    public function returnAdd(&$route, &$args, &$output) {
        print_r($args);
        exit;

$args 缺少主 return_id 标识符:

Array
(
    [0] => Array
        (
            [firstname] => Foo
            [lastname] => Bar
            [email] => test@gmail.com
            [telephone] => 01234556789
            [order_id] => 29
            [date_ordered] => 2017-06-29
            [product] => Canon EOS 5D
            [model] => Product 3
            [quantity] => 1
            [return_reason_id] => 4
            [opened] => 0
            [comment] => Test comment
        )

)

尝试使用 $this->db->getLastId() 但这个 returns 0。使用其他事件测试并且似乎缺少主要标识符。

opencart 在哪里设置传递给 before/after 事件的数据?

system/engine/loader.php 中查找字符串 beforeafter。有做视图、控制器、配置和语言的方法。

如果我没记错的话,您应该能够访问 $output 中的自动增量 return_id,它包含方法 addReturn() 的输出,即 $this->db->getLastId();.

至于为什么从您的活动中第二次调用 getLastId() 不起作用,这是一个很好的问题。我假设中间可能会发生一些其他查询——尽管默认情况下我认为不应该有。在您的事件被触发之前,是否有可能有另一个触发器 运行 查询?