Неустранимая ошибка: вызов неопределенного метода Action :: execute () /home/public_html/system/engine/event.php в строке 62 - PullRequest
0 голосов
/ 27 мая 2019

Привет попытался обновить кэш-память изменений в opencart, и с тех пор я получаю пустую страницу в переднем конце с этим сообщением об ошибке.

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

Спасибо,

1 Ответ

0 голосов
/ 28 мая 2019

Похоже, у вас 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.php в вашем system/storage/modifications.

Возможно, метод execute() отсутствует или поврежден.

Debug

попробуйте var_dump значение $, чтобы увидеть, что там:

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

Надеюсь, это поможет

...