/** * Render given template using supplied data * * @param $path string Path to template file (absolute) * @param $data array Data to be rendered * @return string Template output */ public function render($path, $data) { wfProfileIn(__METHOD__); $templateName = $this->extractTemplateNameFromPath($path); $templateDir = $this->extractTemplateDirFromPath($path); $partialsDir = $templateDir . DIRECTORY_SEPARATOR . self::PARTIALS_DIRECTORY; $partials = is_dir($partialsDir) ? $partialsDir : $templateDir; wfProfileIn(__METHOD__ . " - template: {$path}"); $handlebars = new \Handlebars\Handlebars(); $handlebars->setLoader(new \Handlebars\Loader\FilesystemLoader($templateDir)); $handlebars->setPartialsLoader(new \Handlebars\Loader\FilesystemLoader($partials, ['prefix' => self::PARTIALS_PREFIX])); $contents = $handlebars->render($templateName, $data); wfProfileOut(__METHOD__ . " - template: {$path}"); wfProfileOut(__METHOD__); return $contents; }
/** * Test partial loader */ public function testPartialLoader() { $loader = new \Handlebars\Loader\StringLoader(); $partialLoader = new \Handlebars\Loader\FilesystemLoader(realpath(__DIR__ . '/../fixture/data')); $engine = new \Handlebars\Handlebars(); $engine->setLoader($loader); $engine->setPartialsLoader($partialLoader); $this->assertEquals('test', $engine->render('{{>loader}}', array())); }