/**
  * 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);
 }
Example #2
0
 /**
  * @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)));
 }