public function addRenderer(RendererInterface $renderer) { $this->renderers[$renderer->getIdentifier()] = $renderer; }
/** * Renders the view. * * @throws \Exception * @return string The rendered output. */ public function render() { return $this->renderer->render($this->file, $this->data); }
public function parseTemplateIncludes($unparsedContent, $contentType, $parentTemplate, &$globals, RendererInterface $renderer, $isFinalPass = false, $isDependentPass = false) { if (!is_null($parentTemplate) && !$isDependentPass && $parentTemplate->isParsedIndependent() && !$parentTemplate->isIndependentTemplates()) { return $unparsedContent; } if (!is_null($parentTemplate) && !$isDependentPass) { $this->Logger->debug("Parsing independent includes for [{$parentTemplate->getName()}]"); } $parsedContent = ''; // $parentTemplate->setIndependentTemplates(false); while (($pos = strpos($unparsedContent, '{% template')) !== false) { if (!is_null($parentTemplate) && !$isDependentPass) { $parentTemplate->setIndependentTemplates(true); } // $parentTemplate->setParsedIndependent(true); $parsedContent .= substr($unparsedContent, 0, $pos); $unparsedContent = substr($unparsedContent, $pos); if (!preg_match("/{% template (.+?)(\\?(.+?))?\\s+%}/s", $unparsedContent, $m)) { if ($this->throwRenderExceptions) { throw new Exception("BAD TEMPLATE CALL: {$unparsedContent}"); } else { $this->Logger->error("BAD TEMPLATE CALL: {$unparsedContent}" . "\nURL: " . URLUtils::fullUrl()); continue; } } $unparsedContent = substr($unparsedContent, strlen($m[0])); $this->Logger->debug("Found template call: " . $m[0]); try { $template = $this->loadTemplate($m, $contentType, $parentTemplate, $globals, $isFinalPass, $isDependentPass); } catch (Exception $e) { if ($this->throwRenderExceptions) { throw $e; } else { $this->Logger->error($e->getMessage() . "\nURL: " . URLUtils::fullUrl()); continue; } } $this->Logger->debug("Loaded template [" . $template->getName() . "], now processing"); $newParsedContent = $renderer->processTemplate($template, $contentType, $globals, $isFinalPass, $isDependentPass); $parsedContent .= $newParsedContent; } return $parsedContent . $unparsedContent; }