public function render($name, $params = []) { $params = $this->mergeParams($name, $params); $template = $this->resolver->resolve($name); if (!$template) { throw new Exception\TemplateNotFoundException("Couldn't resolve '{$name}'"); } if ($template->isCompiled()) { $compiled = (string) $template; } else { try { $compiled = $this->handlebars->precompile((string) $template); } catch (\V8JsScriptException $e) { throw new Exception\TemplateCompilationException("Error compiling '{$name}'", 0, $e); } if ($this->resolver instanceof SavingResolverInterface) { $this->resolver->save($template->getKey(), $compiled); } } try { $template = $this->handlebars->template($compiled); return $template($params); } catch (\V8JsScriptException $e) { throw new Exception\TemplateExecutionException("Error running '{$name}'", 0, $e); } }
private function registerPartials(ResolverInterface $resolver, Handlebars $handlebars, $partials) { foreach ($partials as $name => $partial) { $template = $resolver->resolve($partial); if ($template) { if ($template->isCompiled()) { $compiled = $template; } else { $compiled = $handlebars->precompile((string) $template); if ($resolver instanceof SavingResolverInterface) { $resolver->save($partial, $compiled); } } $handlebars->registerPartial($name, $handlebars->template($compiled)); } } }