尝试在mustache.php中调用偏好
问题描述:
尝试使用mustache.php调用胡子偏好。 我敢肯定我正在搞点东西,因为文档似乎表达了你可以做我想做的事情。尝试在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模板。不知道这是否重要。
答
tl; dr:您可能想要使用echo $m->render('03-ups/00-two-up')
。
小胡子使用“加载器”来决定要求提供哪种模板。具体来说,它使用两个加载器:一个常规的加载器,用于所有render()
调用;以及一个可选的partials加载器,用于渲染partials,就像您可能已经猜到的那样。如果您不指定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(...)
]);
我将不得不尝试一下...... 我想我记得从渲染参数中删除“>”,它仍然没有渲染模板。我会尽快回复您,并告诉您是否有效。 由于使用了patternlab,我在这里的情况有点粘,因为我有多个部分文件夹,它将部分文件分解成3个左右不同的文件夹。我没有看到多个部分装载机的文档中的任何内容,但也许我没有看到它? 我很欣赏创造者帮助我,虽然这很酷=) – Ashleigh