使用opencart 3并尝试使用这些事件,但我无法找到标识符。
例如,尝试扩展返回表单添加了一个事件:
$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()
但是返回0.使用其他事件进行测试,似乎缺少主要标识符。
opencart在哪里设置传递给之前/之后事件的数据?
答案 0 :(得分:1)
在system/engine/loader.php
处查看字符串before
和after
。有一些方法可以查看视图,控制器,配置和语言。
答案 1 :(得分:1)
如果我没弄错,您应该能够访问return_id
中的自动增量$output
,其中包含方法addReturn()
的输出,即$this->db->getLastId();
。
至于为什么在你的活动中第二次呼叫getLastId()
不起作用,这是一个很好的问题。我认为可能会发生一些其他的查询 - 虽然默认情况下我不认为应该有。在您的事件被触发之前是否可能有另一个触发器运行查询?