/** * 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; }