/** * @param HitEvent $event */ public function onHit(HitEvent $event) { if ($event->getMetadata()->reflection->getName() !== 'Sulu\\Bundle\\EventBundle\\Entity\\Event') { return; } $locale = $this->requestAnalyzer->getCurrentLocalization()->getLocalization(); $document = $event->getHit()->getDocument(); $eventApiEntity = $this->eventManager->findByIdAndLocale($document->getId(), $locale); if (!$eventApiEntity) { return; } $startDate = $eventApiEntity->getStartDate(); $endDate = $eventApiEntity->getEndDate(); $categories = $eventApiEntity->getCategories(); $categoryTitles = array(); foreach ($categories as $category) { $categoryTitles[] = $category->getName(); } $startDateField = new Field('start_date', $startDate->format('c'), Field::TYPE_STRING); $document->addField($startDateField); if ($endDate) { $endDateField = new Field('end_date', $endDate->format('c'), Field::TYPE_STRING); $document->addField($endDateField); } $categoryTitleField = new Field('category_title', implode(', ', $categoryTitles), Field::TYPE_STRING); $document->addField($categoryTitleField); $url = $this->router->generate('sulu_events.detail', array('id' => $eventApiEntity->getId(), 'slug' => $eventApiEntity->getSlug())); $document->setUrl($url); }
/** * * @param Request $request * * @return \Symfony\Component\HttpFoundation\Response */ public function detailAction(Request $request) { $event = $this->eventManager->findByIdAndLocale($request->get('id'), 'de', true); if (!$event) { throw new NotFoundHttpException(404); } $filter['lat'] = $event->getLatitude(); $filter['long'] = $event->getLongitude(); $filter['area'] = 100; $requestData = $this->requestAnalyzerResolver->resolve($this->requestAnalyzer); $resolverData = $this->parameterResolver->resolve(array(), $this->requestAnalyzer, null, false); $response = $this->templating->renderResponse('SuluEventBundle:templates:detail.html.twig', array_merge(array('event' => $event, 'urls' => isset($resolverData['urls']) ? $resolverData['urls'] : array()), $requestData)); $response->setMaxAge($this->cacheMaxAge); $response->setSharedMaxAge($this->cacheSharedMaxAge); return $response; }