php - 将部分数据嵌入 Mustache 中

标签 php mustache

我遇到了 mustache 模板的问题,希望有人能提供帮助。具体来说,如果我将部分内容作为数据项嵌入到模板中,则 Mustache 不会完全解析我的模板。 如何让 Mustache 完全解析所有模板,包括部分数据?

<?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

但实际发生的是

header {{> embedded}} footer

如果我将 {{>embedded}} 直接放入模板中,它就可以工作,但是由于某种原因,我现在无法对该值进行硬编码。我也无法使用特定于 php 的解决方案,因为模板需要在客户端使用 javascript 运行得同样好。

最佳答案

Mustache 正在“完全解析”您的模板。它只是没有双重解析它们。事实上,Mustache 花费了很多精力来双重解析您的模板。这样做将为 Mustache 注入(inject)创造机会(类似于 SQL 注入(inject),但针对您的模板)。这是一件坏事:)

可以使用高阶部分来完成您正在寻找的内容,但这需要一些代码。也就是说,编写 PHP 和 JavaScript 实现应该不会太困难。

关于php - 将部分数据嵌入 Mustache 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307148/

相关文章:

PHP $GLOBALS 缺少 $_SERVER

php - Laravel - 同时联合+分页?

javascript - 如何使用 Mustache.js 进行高级 i18n 操作?

javascript - 如何在 JavaScript mustache 模板上添加简单的 onclick?

javascript - 显示 mustache 数组的字段名

php - DOMDocument::loadHTML():作为输入提供的空字符串

PHP - 基本选择查询只返回 mysql 数据库的第一行

php - 如何从外部 url Laravel 公共(public)目录保存文件

angular - 如何在 Angular 6+ CLI 中使用 Handlebars.js?

javascript - HTML 标签在 CanJS 中使用 Mustache 模板进行转义