gpt4 book ai didi

zend-framework2 - ZF3 - EventManager 和调度事件

转载 作者:行者123 更新时间:2023-12-01 20:22:01 25 4
gpt4 key购买 nike

在较旧的 ZF2 应用程序中,如果匹配的路由以 admin 开头,我会更改调度监听器中的布局。现在我开始了一个新项目并想要使用 ZF3 组件,但事件管理器确实有一些更改,并且出现以下异常:

Uncaught TypeError: Argument 2 passed to Zend\EventManager\EventManager::attach() must be callable, none given

我真的不知道如何在 ZF3 中处理这个问题。以下是我在 ZF2 应用程序中更改布局的相关源代码:

模块.php

namespace Admin;

use Zend\EventManager\EventInterface;
use Zend\ModuleManager\Feature\BootstrapListenerInterface;

class Module implements BootstrapListenerInterface {

public function onBootstrap(EventInterface $event) {
$application = $event->getApplication();
$eventManager = $application->getEventManager();
$serviceManager = $application->getServiceManager();

$eventManager->attach($serviceManager->get('Admin\Listener\Dispatch'));
}

}

DispatchListener.php

namespace Admin\Listener;

use Zend\EventManager\AbstractListenerAggregate;
use Zend\EventManager\EventInterface;
use Zend\EventManager\EventManagerInterface;
use Zend\Mvc\MvcEvent;

class DispatchListener extends AbstractListenerAggregate {

public function attach(EventManagerInterface $eventManager) {
$this->listeners[] = $eventManager->attach(
MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch'), 100
);
}

public function onDispatch(EventInterface $event) {
$matchedRouteName = $event->getRouteMatch()->getMatchedRouteName();

if (strpos($matchedRouteName, 'admin') === 0) {
$event->getViewModel()->setTemplate('layout/admin');
}
}

}

最佳答案

zf3更注重组件的解耦,似乎已经移除了聚合来附加事件请参见api文档

event manager

简单地说,附加消息说

attach($eventName, callable $listener, $priority = 1) : callable

我希望由于您没有指定 eventName,您会收到错误消息

更新:

请参阅事件管理器从 v2 到 v3 的迁移指南链接

Removed functions

关于zend-framework2 - ZF3 - EventManager 和调度事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com