/** * @param \Zend\Mvc\MvcEvent $event * @param $widgets */ public function attachWidgets(\Zend\Mvc\MvcEvent $event, $widgets) { if (!empty($widgets)) { $locator = $event->getTarget()->getLocator(); /* @var $service \Sysmap\Service\Map */ $service = $locator->get('sysmap-service'); foreach ($widgets as $widget) { $routeMatch = $service->getRequestByIdentifier($widget->getMapId()); if (!empty($routeMatch)) { $widgetEvent = new \Zend\Mvc\MvcEvent(); $request = new \Zend\Http\Request(); $request->setMetadata($routeMatch->getParams()); $widgetEvent->setRouteMatch($routeMatch); $widgetEvent->setResponse(new HttpResponse()); $controllerName = $routeMatch->getParam('controller'); /* @var $controller \Zend\Mvc\Controller\ActionController */ $controller = $locator->get($controllerName); $controller->setEvent($widgetEvent); $controller->dispatch($request); $content = $this->renderView($widgetEvent); $this->_layout->setVar($widget->getPlaceholder(), $content); } } } }