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()
である可能性があります 欠落しているか、何らかの理由で破損しています。
デバッグ
$ valueを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;
}
}
}
}
これがお役に立てば幸いです