致命错误:第62行上的未定义方法Action :: execute()/home/public_html/system/engine/event.php的调用 [英] Fatal error: Call to undefined method Action::execute() /home/public_html/system/engine/event.php on line 62

查看:68
本文介绍了致命错误:第62行上的未定义方法Action :: execute()/home/public_html/system/engine/event.php的调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hi tried refreshing the modification cache cache in opencart and since then i am getting a blank page in front end with this error message.

public function trigger($event, array $args = array()) {
        foreach ($this->data as $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;
            }
        }
    }
}

谢谢

推荐答案

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

It seems your have an OC version 3.0.2.x or above.

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

In your $this->data of the Event Class, you have an event registered that is missing an action parameter.

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

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

All events are registered via the register() method which explicitly requests that an Action object is being passed as a parameter.

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

Since the error is pointing to "Call to undefined method Action::execute()", I can assume, you have an issue with the action class.

很可能您需要检查system/storage/modificationssystem/engine/action.php文件的修改.

Most likely you need to check the Modifications of the system/engine/action.php file in your system/storage/modifications.

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

It could be that the method execute() is either missing or somehow corrupt.

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

try to var_dump the $value to see what is there:

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;
            }
        }
    }
}

希望这会有所帮助

这篇关于致命错误:第62行上的未定义方法Action :: execute()/home/public_html/system/engine/event.php的调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆