Php 将片段作为数据嵌入到Mustach中
我遇到了胡子模板的问题,我希望有人能帮我。具体地说,如果我将一个分部作为数据项嵌入到模板中,Mustach不会完全解析模板如何让Mustach完全解析所有模板,包括作为数据的部分?Php 将片段作为数据嵌入到Mustach中,php,mustache,Php,Mustache,我遇到了胡子模板的问题,我希望有人能帮我。具体地说,如果我将一个分部作为数据项嵌入到模板中,Mustach不会完全解析模板如何让Mustach完全解析所有模板,包括作为数据的部分? <?php $m = new Mustache; $template = ' {{header}} {{body}} {{footer}} '; $data = array( 'header' => 'header', 'body' => '{{>
<?php
$m = new Mustache;
$template = '
{{header}}
{{body}}
{{footer}}
';
$data = array(
'header' => 'header',
'body' => '{{> embedded}}',
'footer' => 'footer'
);
$partials = array(
'embedded' => 'embedded'
);
die($m->render($template, $data, $partials));
?>
但实际发生的是
header {{> embedded}} footer
如果我将{{>embedded}}
直接放入模板中,它就可以工作,但是由于这样或那样的原因,我现在无法硬编码该值。我也不能使用特定于php的解决方案,因为模板需要在客户端与javascript同样出色地工作。Mustach正在“完全解析”模板。这不是双重解析。事实上,Mustach需要特别的努力来避免双重解析模板。这样做将为mustache注入创造机会(就像SQL注入一样,但对于模板)。这是一件坏事:)
使用高阶部分可以完成您想要的内容,但这需要一些代码。也就是说,编写PHP和JavaScript实现应该不会太难。这样就可以了。你觉得怎么样
$partials = array(
'embedded' => 'embedded'
);
$m = new Mustache_Engine(array('partials' => $partials));
$template = '
{{header}}
{{>embedded}}
{{footer}}
';
$data = array(
'header' => 'header',
'footer' => 'footer'
);
die($m->render($template, $data, $partials));
嘿,我怀疑我能得到比这更权威的答案。。。你能详细说明一下胡子注射以及它是如何发生的吗?据我所知,Mustach递归地解析各个部分,那么这和我上面尝试的有什么不同呢?谢谢为了提高你的文章质量,请包括你的答案为什么/如何解决问题。
$partials = array(
'embedded' => 'embedded'
);
$m = new Mustache_Engine(array('partials' => $partials));
$template = '
{{header}}
{{>embedded}}
{{footer}}
';
$data = array(
'header' => 'header',
'footer' => 'footer'
);
die($m->render($template, $data, $partials));