{{ render(controller('AppBundle:Component:travelGuideSidebarWidget', {country: page.country})) }} */ class ComponentController extends Controller { /** * @return EntityManager */ public function getEntityManager() { return $this->getDoctrine()->getManager(); } public function headerAction() { $navPages = $this->getEntityManager()->getRepository('AppBundle:Page')->findTopCountryNavPages(); return $this->render('default/components/header.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'nav_pages' => $navPages, ]); } public function breadcrumbAction(Page $page) { return $this->render('default/components/breadcrumb.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'breadcrumb_entries' => Util::createBreadcrumb($page), ]); } public function navSidebarWidgetAction(Page $page) { $pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page'); $view = [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'page' => $page, ]; if ($page->getHasChildren()) { if ($page->getLvl() == 0) { $view['nav_pages'] = $page->getChildren(); $view['nav_child_pages'] = []; } else { $view['nav_pages'] = $pageRepo->getSiblings($page); $view['nav_child_pages'] = $page->getChildren(); } $view['nav_open_node'] = $page; } else { $parent = $page->getParent(); if ($parent) { $view['nav_pages'] = $pageRepo->getSiblings($parent); if (empty($view['nav_pages'])) { $view['nav_pages'] = $pageRepo->getSiblings($page); } else { $view['nav_child_pages'] = $pageRepo->getSiblings($page); } $view['nav_open_node'] = $parent; } else { $view['nav_pages'] = $pageRepo->getSiblings($page); $view['nav_child_pages'] = []; $view['nav_open_node'] = null; } } return $this->render('default/components/sidebar/navSidebarWidget.html.twig', $view); } public function searchSidebarWidgetAction(Page $page) { $combinedDestination = null; if ($page->getTravelProgram()) { $countries = $page->getTravelProgram()->getCountries(); $destination = $countries->first(); if (count($countries) > 1) { $combinedDestination = $countries[1]; } } else { $destination = $page->getCountry(); } return $this->render('default/components/sidebar/searchSidebarWidget.html.twig', [ 'search_form' => $this->createForm(SearchRequestType::class, [ 'c' => $destination, 'c2' => $combinedDestination, ])->createView() ]); } public function travelGuideSidebarWidgetAction(TravelCountry $country) { $repo = $this->getEntityManager()->getRepository('AppBundle:Page'); $rootPage = $repo->find(13); $pages = $repo->getChildrenQueryBuilder($rootPage) ->andWhere('IDENTITY(node.country) = '. $country->getId()) ->andWhere('node.status > 0') ->getQuery() ->execute() ; return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [ 'slider_title' => 'Reiseführer', 'target_widget' => 'travel-leader-widget', 'pages' => $pages ]); } public function travelMagazineSidebarWidgetAction(TravelCountry $country) { $repo = $this->getEntityManager()->getRepository('AppBundle:Page'); $rootPage = $repo->find(2803); $pages = $repo->getChildrenQueryBuilder($rootPage) ->andWhere('IDENTITY(node.country) = '. $country->getId()) ->andWhere('node.status > 0') ->getQuery() ->execute() ; return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [ 'slider_title' => 'Reisemagazin', 'target_widget' => 'travel-magazine-widget', 'pages' => $pages ]); } public function offersSidebarWidgetAction(TravelCountry $country = null) { return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [ 'slider_title' => 'Angebote', 'target_widget' => 'offer-widget', 'pages' => $this->getOffersByCountry($country), ]); } public function offersCarouselAction(TravelCountry $country = null) { return $this->render('default/components/multiPageBoxCarousel.html.twig', [ 'pages' => $this->getOffersByCountry($country), ]); } private function getOffersByCountry(TravelCountry $country = null) { $repo = $this->getDoctrine()->getRepository('AppBundle:Page'); return $country === null ? $repo->findOffers() : $repo->findWithTravelProgramsOfCountry($country) ; } public function feedbacksSidebarWidgetAction(TravelCountry $country) { return $this->render(':default/components/sidebar:textSliderSidebarWidget.html.twig', [ 'slider_title' => 'Kundenfeedback', 'target_widget' => 'feedback-widget', 'slides' => $this->getDoctrine()->getRepository('AppBundle:Page')->findFeedbacks( $country->getFeedbackPage()->getId()), 'theme' => 'gray-box', ]); } }