Изглежда имате OC версия 3.0.2.x или по-нова.
Във вашите $this->data
на Event Class, имате регистрирано събитие, на което липсва параметър за действие.
$this->data[] = array(
'trigger' => $trigger,
'action' => $action, // <-- this must be an Action Object with a method execute()
'priority' => $priority
);
Всички събития се регистрират чрез register()
метод, който изрично изисква обект на действие да се предава като параметър.
Тъй като грешката сочи към „Извикване на недефиниран метод Action::execute()“, мога да предположа, че имате проблем с класа на действие.
Най-вероятно трябва да проверите модификациите на system/engine/action.php
файл във вашата system/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;
}
}
}
}
Надявам се това да помогне