Я не могу заставить мои события отключиться. Это мой первый раз, играя с ними. Если вы посмотрите, я создаю событие в методе init
, а затем я попытаюсь его отключить в методе onBootstrap
. Событие должно произвести штамп со строкой, но его нет. любая помощь будет оценена по достоинству.События, которые не запускаются в прикладном модуле
namespace Application;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ControllerProviderInterface;
use Zend\ModuleManager\Feature\BootstrapListenerInterface;
use Zend\ModuleManager\Feature\ServiceProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use Zend\ModuleManager\Feature\InitProviderInterface;
use Zend\ModuleManager\Feature\ViewHelperProviderInterface;
use Zend\ModuleManager\ModuleManagerInterface;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
use Zend\EventManager\EventInterface;
use Doctrine\DBAL\DriverManager;
class Module implements
AutoloaderProviderInterface,
ControllerProviderInterface,
BootstrapListenerInterface,
ServiceProviderInterface,
ConfigProviderInterface,
InitProviderInterface,
ViewHelperProviderInterface
{
public function init(ModuleManagerInterface $manager)
{
$eventManager = $manager->getEventManager();
$eventManager->attach('do',function($e){
$event = $e->getName();
$target = get_class($e->getTarget());
$params = $e->getParams();
$str = sprintf(
'Handled event \"%s\" on target \"%s\", with parameters %s',
$event,
$target,
json_encode($params)
);
die($str);
});
}
public function onBootstrap(EventInterface $e)
{
$this->attachEventManagerToModuleRouteListener($e);
$this->setupDoctrineConnectionMappings($e);
$eventManager = $e->getApplication()->getEventManager();
$eventManager->trigger('do',$this,array('j','o','n'));
}
public function getConfig()
{
return array_merge(
include __DIR__ . '/config/module.config.php',
include __DIR__ . '/config/routes.config.php'
);
}
public function getServiceConfig()
{
return include __DIR__ . '/config/services.config.php';
}
public function getControllerConfig()
{
return include __DIR__ . '/config/controllers.config.php';
}
public function getViewHelperConfig()
{
return include __DIR__ . '/config/view.config.php';
}
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__
),
),
);
}
private function attachEventManagerToModuleRouteListener(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
}
private function setupDoctrineConnectionMappings(MvcEvent $e)
{
$driver = $e->getApplication()->getServiceManager()->get('doctrine.connection.orm_default');
$platform = $driver->getDatabasePlatform();
$platform->registerDoctrineTypeMapping('enum', 'string');
$platform->registerDoctrineTypeMapping('set', 'string');
}
}