致命错误:调用第62行上未定义方法Action :: execute()/home/public_html/system/engine/event.php

时间:2019-05-27 10:39:09

标签: php mysql sql phpmyadmin opencart

您好尝试在opencart中刷新修改缓存,从那时起,我在前端出现空白页面并显示此错误消息。

setData()

谢谢

1 个答案:

答案 0 :(得分:0)

似乎您的OC版本为3.0.2.x或更高。

在事件类的$this->data中,您注册了一个缺少操作参数的事件。

$this->data[] = array(
    'trigger'  => $trigger,
    'action'   => $action, // <-- this must be an Action Object with a method execute()
    'priority' => $priority
);

所有事件都是通过register()方法注册的,该方法明确要求将Action对象作为参数传递。

由于错误指向“未定义的方法Action :: execute()的调用”,因此我可以假设您的操作类有问题。

您很有可能需要检查system/engine/action.phpsystem/storage/modifications文件的修改。

方法execute()可能丢失或以某种方式损坏。

调试

尝试var_dump $ value来查看其中的内容:

public function trigger($event, array $args = array()) {
        foreach ($this->data as $value) {
//log out the $value before the error to see if the Action object is actually there and see what trigger causes this.
var_dump($value);
            if (preg_match('/^' . str_replace(array('\*', '\?'), array('.*', '.'), preg_quote($value['trigger'], '/')) . '/', $event)) {
                $result = $value['action']->execute($this->registry, $args);

            if (!is_null($result) && !($result instanceof Exception)) {
                return $result;
            }
        }
    }
}

希望这会有所帮助