尝试使用mustache.php调用胡须部分。 我确定我搞砸了一些东西,因为文档似乎表明你可以做我想做的事情。
$m = new Mustache_Engine(array(
'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/patternlab-php-master/source/_patterns/02-organisms/'),
));
echo $m->render('{{> 03-ups/00-two-up }}');
我收到此错误:
Fatal error: Uncaught exception 'Mustache_Exception_UnknownTemplateException' with message 'Unknown template: {{> 03-ups/00-two-up }}' in C:\xampp\htdocs\grogan\wordpress\wp-content\themes\grogan-theme\vendor\mustache\mustache\src\Mustache\Loader\FilesystemLoader.php:102
Stack trace:
#0 C:\xampp\htdocs\grogan\wordpress\wp-content\themes\grogan-theme\vendor\mustache\mustache\src\Mustache\Loader\FilesystemLoader.php(82): Mustache_Loader_FilesystemLoader->loadFile('{{> 03-ups/00-t...')
#1 C:\xampp\htdocs\grogan\wordpress\wp-content\themes\grogan-theme\vendor\mustache\mustache\src\Mustache\Engine.php(617): Mustache_Loader_FilesystemLoader->load('{{> 03-ups/00-t...')
#2 C:\xampp\htdocs\grogan\wordpress\wp-content\themes\grogan-theme\vendor\mustache\mustache\src\Mustache\Engine.php(217): Mustache_Engine->loadTemplate('{{> 03-ups/00-t...')
#3 C:\xampp\htdocs\grogan\wordpress\wp-content\themes\grogan-theme\page-consignment.php(46): Mustache_Engine->render('{{> 03-ups/00-t...')
#4 C:\xampp\htdocs\grogan\wordpress\wp-includes\templ in C:\xampp\htdocs\grogan\wordpress\wp-content\themes\grogan-theme\vendor\mustache\mustache\src\Mustache\Loader\FilesystemLoader.php on line 102
我使用patternlab来存放我所有的部分并将它们调用到wordpress模板中。不确定是否重要。
答案 0 :(得分:0)
tl; dr:您可能想要使用echo $m->render('03-ups/00-two-up')
。
胡子使用"装载机"在你要求时,决定要渲染的模板。具体来说,它使用两个加载器:一个用于所有render()
调用的常规加载器,以及一个可选的partials加载器,用于渲染部分,正如您可能已经猜到的那样。如果您没有指定部分加载程序,它将回退到主加载程序。
默认情况下,Mustache使用字符串加载器作为主加载器。这就是为什么你可以开箱即用$m->render('string with {{mustaches}}')
。但是字符串加载器不仅仅适用于多行模板,因此您通常需要指定文件系统加载器。这将获取一个基目录,并根据名称从文件加载模板。因此,如果您调用$m->render('foo')
,它将在文件系统加载程序的基本目录中查找名为foo.mustache
的文件。
这是你配置它要做的,并且在异常消息中有一个提示:它说Unknown template: {{> 03-ups/00-two-up }}
,意思是"我试图找到一个名为{{> 03-ups/00-two-up }}.mustache
的文件但是没有一个" :)
如果您将呼叫更改为实际的模板名称,它将起作用:
echo $m->render('03-ups/00-two-up');
如果您真的想为主加载器使用字符串加载器,但仍然指定了部分文件系统加载器,则可以显式添加它:
new Mustache_Engine([
'partials_loader' => new Mustache_Loader_FilesystemLoader(...)
]);