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
中查找字符串 before
和 after
。有做视图、控制器、配置和语言的方法。
如果我没记错的话,您应该能够访问 $output
中的自动增量 return_id
,它包含方法 addReturn()
的输出,即 $this->db->getLastId();
.
至于为什么从您的活动中第二次调用 getLastId()
不起作用,这是一个很好的问题。我假设中间可能会发生一些其他查询——尽管默认情况下我认为不应该有。在您的事件被触发之前,是否有可能有另一个触发器 运行 查询?
使用 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
中查找字符串 before
和 after
。有做视图、控制器、配置和语言的方法。
如果我没记错的话,您应该能够访问 $output
中的自动增量 return_id
,它包含方法 addReturn()
的输出,即 $this->db->getLastId();
.
至于为什么从您的活动中第二次调用 getLastId()
不起作用,这是一个很好的问题。我假设中间可能会发生一些其他查询——尽管默认情况下我认为不应该有。在您的事件被触发之前,是否有可能有另一个触发器 运行 查询?