Esempio n. 1
0
 /**
  * Generate view aliases based on provided view namespace and directory under such namespace.
  *
  * @param ViewManager       $viewManager
  * @param TemplateProcessor $templater
  * @param array             $token
  */
 protected function buildAliases(ViewManager $viewManager, TemplateProcessor $templater, array $token)
 {
     if (isset(self::$cache[$this->importID()])) {
         //Already generated
         $this->aliases = self::$cache[$this->importID()];
         return;
     }
     try {
         $views = $viewManager->getViews($this->namespace);
     } catch (ViewException $exception) {
         //Unable to generate import
         throw new TemplaterException($exception->getMessage(), $token, $exception->getCode(), $exception);
     }
     foreach ($views as $view => $engine) {
         if (!empty($this->directory) && strpos($view, $this->directory) !== 0) {
             //Different directory
             continue;
         }
         //Remove directory from view name
         $alias = ltrim(substr($view, strlen($this->directory)), '/');
         //Replace path separator (must be normalized) with tag path separator (usually .)
         $alias = str_replace('/', $templater->getOptions()['separator'], $alias);
         //View alias = namespace:view.subView
         $alias = $this->outerNamespace . $templater->getOptions()['nsSeparator'] . $alias;
         $this->aliases[$alias] = $view;
     }
     if (empty($this->aliases)) {
         throw new TemplaterException("No views were found under directory '{$this->directory}' in namespace '{$this->namespace}'.", $token);
     }
     //Caching
     self::$cache[$this->importID()] = $this->aliases;
 }