使用 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/