예제 #1
0
 /**
  * @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);
             }
         }
     }
 }