/** * Forwards pathInfo to subrequests. * Allows HostPathSiteSelector to work. * * @param string $controller * @param array $attributes * @param array $query * * @return ControllerReference */ public function controller($controller, $attributes = array(), $query = array()) { $globals = $this->environment->getGlobals(); if (!isset($attributes['pathInfo'])) { $sitePath = $this->siteSelector->retrieve()->getRelativePath(); $currentPathInfo = $globals['app']->getRequest()->getPathInfo(); $attributes['pathInfo'] = $sitePath . $currentPathInfo; } return $this->httpKernelExtension->controller($controller, $attributes, $query); }
/** * @param FragmentHandler $handler A FragmentHandler instance * @param CacheProvider $cache * @param Rating $rating * @param SettingsProvider $settingsProvider * @param int $sidebarCacheLifeTime * @param TranslationRepository $translationRepository * @param string $locale */ public function __construct(FragmentHandler $handler, CacheProvider $cache, Rating $rating, SettingsProvider $settingsProvider, $sidebarCacheLifeTime, TranslationRepository $translationRepository, $locale) { parent::__construct($handler); $this->cache = $cache; $this->rating = $rating; $this->settingsProvider = $settingsProvider; $this->sidebarCacheLifeTime = $sidebarCacheLifeTime; $this->translationRepository = $translationRepository; $this->locale = $locale; }
/** * The goal of this method is to pass automatically certain master request attributes to subrequests. * * This fixes symfony bug #6932 (https://github.com/symfony/symfony/issues/6932) * * @param $controller * @param array $attributes * @param array $query * * @return ControllerReference */ public function controller($controller, $attributes = array(), $query = array()) { $request = $this->container->get('request'); // The master request has to be unifik enabled if ($request->get('_unifikEnabled')) { $attributes['_unifikRequest'] = $request->get('_unifikRequest'); $attributes['_unifikEnabled'] = true; $attributes['_masterRoute'] = $request->get('_masterRoute', $request->get('_route')); // chained to support multiples embedded subrequests $attributes['_locale'] = $request->getLocale(); } return parent::controller($controller, $attributes, $query); }
/** * Renders the given item. * * @param array $item * @param array $variables * @return string * @throws \RuntimeException If placeholder cannot be rendered. */ protected function renderItemContent(array $item, array $variables) { if (isset($item['data']) || array_key_exists('data', $item)) { $variables['data'] = $item['data']; } if (isset($item['template'])) { return $this->environment->render($item['template'], $variables); } if (isset($item['action'])) { $query = array(); if ($this->request) { $query = $this->request->query->all(); } return $this->kernelExtension->renderFragment($this->kernelExtension->controller($item['action'], $variables, $query)); } throw new \RuntimeException(sprintf('Cannot render placeholder item with keys "%s". Expects "template" or "action" key.', implode('", "', $item))); }