в более старом приложении ZF2. Я меняю макет в диспетчерском прослушивании, если согласованный маршрут начинается с admin
. Теперь я начал новый проект, и вы хотите использовать компоненты ZF3, но менеджер событий есть некоторые изменения, и я получаю следующее исключение:ZF3 - событие EventManager и отправка
Uncaught TypeError: Argument 2 passed to Zend\EventManager\EventManager::attach() must be callable, none given
Я не знаю, на самом деле, как справиться с этим в ZF3. Вот мои соответствующие исходные коды, чтобы изменить расположение в моем ZF2 применения:
module.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');
}
}
}
Попробуйте добавить второй аргумент в: public function attach (EventManagerInterface $ eventManager, $ priodity = 1) {...} – tasmaniski