php - Opencart 事件数据缺少标识符

标签 php opencart

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

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

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

Controller :

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] => <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ea9e8f999eaa8d878b8386c4898587" rel="noreferrer noopener nofollow">[email protected]</a>
            [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() 但返回 0。使用其他事件进行测试,似乎缺少主要标识符。

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

最佳答案

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

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

关于php - Opencart 事件数据缺少标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44822118/

相关文章:

php - 如何在 PHP for MySQL 中获取数组外部的变量?

php - 在 Opencart 上使用 foreach 的 Twitter Bootstrap 选项卡

php - CodeIgniter所有页面都重定向到主页吗?

php - 如果 laravel eloquent 中请求变量为 null,则不要更改 mysql 列值

php - 有没有办法移动/重置 preg_match_all() 中的搜索指针?

url - Opencart seo url 在信息页面中不起作用

php - 通过导航背景图像不是动态的

php - 单元格内的背景颜色在 fpdf 中没有改变

javascript - OpenCart PageSpeed - 消除首屏内容中的渲染阻塞 JavaScript 和 CSS

php - Opencart Admin 如何将选项卡添加到模块中