Exemple #1
0
 /**
  * Warm up an entire collection of templates based on the
  * provided RenderingContext (the TemplatePaths carried by
  * the RenderingContext, to be precise).
  *
  * Returns a FluidCacheWarmupResult with result information
  * about all detected template files and the compiling of
  * those files. If a template fails to compile or throws an
  * error, a mitigation suggestion is included for that file.
  *
  * @param RenderingContextInterface $renderingContext
  * @return FluidCacheWarmupResult
  */
 public function warm(RenderingContextInterface $renderingContext)
 {
     $renderingContext->getTemplateCompiler()->enterWarmupMode();
     $result = new FluidCacheWarmupResult();
     $result->merge($this->warmupTemplateRootPaths($renderingContext), $this->warmupPartialRootPaths($renderingContext), $this->warmupLayoutRootPaths($renderingContext));
     return $result;
 }
Exemple #2
0
 /**
  * @param string $templateIdentifier
  * @param \Closure $templateSourceClosure Closure which returns the template source if needed
  * @return ParsedTemplateInterface
  */
 public function getOrParseAndStoreTemplate($templateIdentifier, $templateSourceClosure)
 {
     $compiler = $this->renderingContext->getTemplateCompiler();
     if (isset($this->parsedTemplates[$templateIdentifier])) {
         $parsedTemplate = $this->parsedTemplates[$templateIdentifier];
     } elseif ($compiler->has($templateIdentifier)) {
         $parsedTemplate = $compiler->get($templateIdentifier);
     } else {
         $parsedTemplate = $this->parse($templateSourceClosure($this, $this->renderingContext->getTemplatePaths()), $templateIdentifier);
         $this->parsedTemplates[$templateIdentifier] = $parsedTemplate;
         if ($parsedTemplate->isCompilable()) {
             try {
                 $compiler->store($templateIdentifier, $parsedTemplate);
             } catch (StopCompilingException $stop) {
                 $parsedTemplate->setCompilable(FALSE);
                 return $parsedTemplate;
             }
         }
     }
     return $parsedTemplate;
 }