在我的助手中,我有以下代码:
$event = new Event('Helper.Regions.beforeSetBlock', $this->_View, [
'content' => &$block['Block']['body']
]);
EventManager::instance()->dispatch($event);
这是我的事件监听器类:
public function implementedEvents()
{
return [
'Helper.Regions.beforeSetBlock' => 'filterBlockShortcode'
];
}
public function filterBlockShortcode($event) {
}
在bootstrap.php中我注册了这样的事件:
EventManager::instance()->on(
'Helper.Regions.beforeSetBlock',
new BlocksEventHandler()
)
但我收到以下错误:
错误:函数名称必须是字符串
文件C:\ wamp \ www \ CookieCMS \ vendor \ cakephp \ cakephp \ src \ Event \ EventManager.php
行:387
有什么想法吗?
答案 0 :(得分:0)
您正在以错误的方式注册侦听器,您正在执行的是注册可调用的方式,即您传递的事件的名称应该调用第二个参数中的可调用对象。
实现\Cake\Event\EventListenerInterface
的侦听器对象必须作为第一个参数传递,它们本身提供了他们想要侦听的事件的名称。
EventManager::instance()->on(
new BlocksEventHandler()
);