Có vẻ như bạn có phiên bản OC 3.0.2.x trở lên.
Trong dữ liệu $this->data
của Lớp sự kiện, bạn có một sự kiện đã đăng ký bị thiếu tham số hành động.
$this->data[] = array(
'trigger' => $trigger,
'action' => $action, // <-- this must be an Action Object with a method execute()
'priority' => $priority
);
Tất cả các sự kiện được đăng ký qua register()
phương thức yêu cầu rõ ràng rằng một đối tượng Hành động đang được truyền dưới dạng một tham số.
Vì lỗi đang trỏ đến "Gọi phương thức không xác định Action ::execute ()", tôi có thể cho rằng bạn gặp sự cố với lớp hành động.
Nhiều khả năng bạn cần kiểm tra các Sửa đổi của system/engine/action.php
tệp trong system/storage/modifications
của bạn .
Có thể là phương thức execute()
bị thiếu hoặc bị hỏng bằng cách nào đó.
Gỡ lỗi
thử var_dump giá trị $ để xem ở đó là gì:
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;
}
}
}
}
Hy vọng điều này sẽ giúp ích