public function rebuild(View $view) { $widgetMap = array(); if ($view->getTemplate()) { $widgetMap = $view->getTemplate()->getWidgetMap(); } foreach ($view->getWidgets() as $widget) { if (!isset($widgetMap[$widget->getSlot()])) { $widgetMap[$widget->getSlot()] = array(); } //create the new widget map $widgetMapEntry = new WidgetMap(); $widgetMapEntry->setAction(WidgetMap::ACTION_CREATE); $widgetMapEntry->setWidgetId($widget->getId()); $widgetMapEntry->setAsynchronous($widget->isAsynchronous()); $widgetMapEntry = $this->helper->generateWidgetPosition($widgetMapEntry, $widget, $widgetMap, null); $widgetMap[$widget->getSlot()][] = $widgetMapEntry; } $widgetMapAsArray = array(); foreach ($widgetMap as $slotId => $widgetMapItems) { foreach ($widgetMapItems as $widgetMapItem) { $widgetMapAsArray[$slotId][] = $this->widgetMapTransformer->transform($widgetMapItem); } } $view->setWidgetMap($widgetMapAsArray); }